import Spa.Lattice /-! # Unit Lattice This file provides a proof that in addition to being a lattice, `PUnit` is a `Spa.FiniteHeightLattice`. This is fairly trivial result, but the unit is used as a placeholder in various contexts (e.g., as a base case for the iterated product `Spa/Lattice/IterProd.lean`). -/ namespace Spa /-- Since a singleton type's preorder has no nonempty `<` chains, they are vacuously bounded by any minimum height. -/ lemma boundedChains_of_subsingleton (α : Type*) [Preorder α] [Subsingleton α] (n : ℕ) : BoundedChains α n := fun c => by by_contra hc push_neg at hc exact (c.step ⟨0, by omega⟩).ne (Subsingleton.elim _ _) instance : FiniteHeightLattice PUnit where toLattice := inferInstance longestChain := RelSeries.singleton _ PUnit.unit chains_bounded := boundedChains_of_subsingleton PUnit 0 end Spa