Module docstring
{"# Lattice structures on the type of nonnegative elements
"}
{"# Lattice structures on the type of nonnegative elements
"}
Nonneg.orderBot
instance
[Preorder α] {a : α} : OrderBot { x : α // a ≤ x }
/-- This instance uses data fields from `Subtype.partialOrder` to help type-class inference.
The `Set.Ici` data fields are definitionally equal, but that requires unfolding semireducible
definitions, so type-class inference won't see this. -/
instance orderBot [Preorder α] {a : α} : OrderBot { x : α // a ≤ x } :=
{ Set.Ici.orderBot with }
Nonneg.bot_eq
theorem
[Preorder α] {a : α} : (⊥ : { x : α // a ≤ x }) = ⟨a, le_rfl⟩
theorem bot_eq [Preorder α] {a : α} : (⊥ : { x : α // a ≤ x }) = ⟨a, le_rfl⟩ :=
rfl
Nonneg.noMaxOrder
instance
[PartialOrder α] [NoMaxOrder α] {a : α} : NoMaxOrder { x : α // a ≤ x }
instance noMaxOrder [PartialOrder α] [NoMaxOrder α] {a : α} : NoMaxOrder { x : α // a ≤ x } :=
show NoMaxOrder (Ici a) by infer_instance
Nonneg.semilatticeSup
instance
[SemilatticeSup α] {a : α} : SemilatticeSup { x : α // a ≤ x }
instance semilatticeSup [SemilatticeSup α] {a : α} : SemilatticeSup { x : α // a ≤ x } :=
Set.Ici.semilatticeSup
Nonneg.semilatticeInf
instance
[SemilatticeInf α] {a : α} : SemilatticeInf { x : α // a ≤ x }
instance semilatticeInf [SemilatticeInf α] {a : α} : SemilatticeInf { x : α // a ≤ x } :=
Set.Ici.semilatticeInf
Nonneg.distribLattice
instance
[DistribLattice α] {a : α} : DistribLattice { x : α // a ≤ x }
instance distribLattice [DistribLattice α] {a : α} : DistribLattice { x : α // a ≤ x } :=
Set.Ici.distribLattice
Nonneg.instDenselyOrdered
instance
[Preorder α] [DenselyOrdered α] {a : α} : DenselyOrdered { x : α // a ≤ x }
instance instDenselyOrdered [Preorder α] [DenselyOrdered α] {a : α} :
DenselyOrdered { x : α // a ≤ x } :=
show DenselyOrdered (Ici a) from Set.instDenselyOrdered
Nonneg.conditionallyCompleteLinearOrder
abbrev
[ConditionallyCompleteLinearOrder α] {a : α} : ConditionallyCompleteLinearOrder { x : α // a ≤ x }
/-- If `sSup ∅ ≤ a` then `{x : α // a ≤ x}` is a `ConditionallyCompleteLinearOrder`. -/
protected noncomputable abbrev conditionallyCompleteLinearOrder [ConditionallyCompleteLinearOrder α]
{a : α} : ConditionallyCompleteLinearOrder { x : α // a ≤ x } :=
{ @ordConnectedSubsetConditionallyCompleteLinearOrder α (Set.Ici a) _ ⟨⟨a, le_rfl⟩⟩ _ with }
Nonneg.conditionallyCompleteLinearOrderBot
abbrev
[ConditionallyCompleteLinearOrder α] (a : α) : ConditionallyCompleteLinearOrderBot { x : α // a ≤ x }
/-- If `sSup ∅ ≤ a` then `{x : α // a ≤ x}` is a `ConditionallyCompleteLinearOrderBot`.
This instance uses data fields from `Subtype.linearOrder` to help type-class inference.
The `Set.Ici` data fields are definitionally equal, but that requires unfolding semireducible
definitions, so type-class inference won't see this. -/
protected noncomputable abbrev conditionallyCompleteLinearOrderBot
[ConditionallyCompleteLinearOrder α] (a : α) :
ConditionallyCompleteLinearOrderBot { x : α // a ≤ x } :=
{ Nonneg.orderBot, Nonneg.conditionallyCompleteLinearOrder with
csSup_empty := by
rw [@subset_sSup_def α (Set.Ici a) _ _ ⟨⟨a, le_rfl⟩⟩]; simp [bot_eq] }