Theory of complete lattices #
Main definitions #
sSup
andsInf
are the supremum and the infimum of a set;iSup (f : ι → α)
andiInf (f : ι → α)
are indexed supremum and infimum of a function, defined assSup
andsInf
of the range of this function;- class
CompleteLattice
: a bounded lattice such thatsSup s
is always the least upper boundary ofs
andsInf s
is always the greatest lower boundary ofs
; - class
CompleteLinearOrder
: a linear ordered complete lattice.
Naming conventions #
In lemma names,
sSup
is calledsSup
sInf
is calledsInf
⨆ i, s i
is callediSup
⨅ i, s i
is callediInf
⨆ i j, s i j
is callediSup₂
. This is aniSup
inside aniSup
.⨅ i j, s i j
is callediInf₂
. This is aniInf
inside aniInf
.⨆ i ∈ s, t i
is calledbiSup
for "boundediSup
". This is the special case ofiSup₂
wherej : i ∈ s
.⨅ i ∈ s, t i
is calledbiInf
for "boundediInf
". This is the special case ofiInf₂
wherej : i ∈ s
.
Notation #
Equations
- OrderDual.supSet α = { sSup := sInf }
Equations
- OrderDual.infSet α = { sInf := sSup }
Note that we rarely use CompleteSemilatticeSup
(in fact, any such object is always a CompleteLattice
, so it's usually best to start there).
Nevertheless it is sometimes a useful intermediate step in constructions.
Any element of a set is less than the set supremum.
Any upper bound is more than the set supremum.
Alias of the forward direction of isLUB_iff_sSup_eq
.
Note that we rarely use CompleteSemilatticeInf
(in fact, any such object is always a CompleteLattice
, so it's usually best to start there).
Nevertheless it is sometimes a useful intermediate step in constructions.
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- sInf : Set α → α
Any element of a set is more than the set infimum.
Any lower bound is less than the set infimum.
Instances
- AddGroupTopology.instCompleteSemilatticeInf
- CategoryTheory.Subobject.completeSemilatticeInf
- GroupTopology.instCompleteSemilatticeInf
- MeasureTheory.Measure.instCompleteSemilatticeInf
- RingTopology.instCompleteSemilatticeInf
- TwoSidedIdeal.instCompleteSemilatticeInf
- fixedPoints.instCompleteSemilatticeInfElemFixedPointsCoeOrderHom
Any element of a set is more than the set infimum.
Any lower bound is less than the set infimum.
Alias of the forward direction of isGLB_iff_sInf_eq
.
A complete lattice is a bounded lattice which has suprema and infima for every subset.
- sup : α → α → α
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- inf : α → α → α
- sSup : Set α → α
Any element of a set is less than the set supremum.
Any upper bound is more than the set supremum.
- sInf : Set α → α
Any element of a set is more than the set infimum.
Any lower bound is less than the set infimum.
- top : α
- bot : α
Any element is less than the top one.
Any element is more than the bottom one.
Instances
- AddCon.instCompleteLattice
- AddGroupTopology.instCompleteLattice
- AddSubgroup.instCompleteLattice
- AddSubmonoid.instCompleteLattice
- AddSubsemigroup.instCompleteLattice
- AffineSubspace.instCompleteLattice
- Algebra.instCompleteLatticeSubalgebra
- CategoryTheory.GrothendieckTopology.instCompleteLattice
- CategoryTheory.Sieve.instCompleteLattice
- CategoryTheory.Subgroupoid.instCompleteLattice
- CategoryTheory.Subobject.instCompleteLattice
- CategoryTheory.instCompleteLatticePresieve
- CompleteLat.instCompleteLatticeα
- CompleteSublattice.instCompleteLattice
- Con.instCompleteLattice
- Concept.instCompleteLattice
- ConvexCone.instCompleteLattice
- Filter.instCompleteLatticeFilter
- FirstOrder.Language.Substructure.instCompleteLattice
- GroupTopology.instCompleteLattice
- HomogeneousIdeal.completeLattice
- Ideal.Filtration.instCompleteLattice
- IntermediateField.instCompleteLattice
- Interval.completeLattice
- LieSubalgebra.completeLattice
- LieSubmodule.instCompleteLattice
- LowerSet.completeLattice
- MeasurableSpace.instCompleteLattice
- MeasureTheory.Filtration.instCompleteLattice
- MeasureTheory.Measure.instCompleteLattice
- MeasureTheory.OuterMeasure.instCompleteLattice
- NonUnitalAlgebra.instCompleteLatticeNonUnitalSubalgebra
- NonUnitalStarAlgebra.instCompleteLatticeNonUnitalStarSubalgebra
- NonUnitalSubring.instCompleteLattice
- NonUnitalSubsemiring.instCompleteLattice
- Order.Ideal.instCompleteLattice
- OrderDual.instCompleteLattice
- OrderHom.instCompleteLattice
- Pi.instCompleteLattice
- Prod.instCompleteLattice
- Projectivization.Subspace.instCompleteLattice
- Prop.instCompleteLattice
- RingCon.instCompleteLattice
- RingTopology.instCompleteLattice
- Set.Iic.instCompleteLattice
- Setoid.Partition.completeLattice
- Setoid.completeLattice
- StarSubalgebra.completeLattice
- Subfield.instCompleteLattice
- Subgroup.instCompleteLattice
- Sublattice.instCompleteLattice
- Submodule.completeLattice
- Submonoid.instCompleteLattice
- Subring.instCompleteLattice
- Subsemigroup.instCompleteLattice
- Subsemiring.instCompleteLattice
- TopologicalSpace.Closeds.completeLattice
- TopologicalSpace.Opens.instCompleteLattice
- TopologicalSpace.instCompleteLattice
- TwoSidedIdeal.instCompleteLattice
- ULift.instCompleteLattice
- UpperSet.completeLattice
- WithBot.WithTop.completeLattice
- WithTop.WithBot.completeLattice
- fixedPoints.completeLattice
- instCompleteLatticeRel
- instCompleteLatticeStructureGroupoid
- instCompleteLatticeUniformSpace
Any element is less than the top one.
Any element is more than the bottom one.
Equations
- CompleteLattice.toBoundedOrder = BoundedOrder.mk
Create a CompleteLattice
from a PartialOrder
and InfSet
that returns the greatest lower bound of a set. Usually this constructor provides
poor definitional equalities. If other fields are known explicitly, they should be
provided; for example, if inf
is known explicitly, construct the CompleteLattice
instance as
instance : CompleteLattice my_T where
inf := better_inf
le_inf := ...
inf_le_right := ...
inf_le_left := ...
-- don't care to fix sup, sSup, bot, top
__ := completeLatticeOfInf my_T _
Equations
- completeLatticeOfInf α isGLB_sInf = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Any CompleteSemilatticeInf
is in fact a CompleteLattice
.
Note that this construction has bad definitional properties:
see the doc-string on completeLatticeOfInf
.
Equations
Create a CompleteLattice
from a PartialOrder
and SupSet
that returns the least upper bound of a set. Usually this constructor provides
poor definitional equalities. If other fields are known explicitly, they should be
provided; for example, if inf
is known explicitly, construct the CompleteLattice
instance as
instance : CompleteLattice my_T where
inf := better_inf
le_inf := ...
inf_le_right := ...
inf_le_left := ...
-- don't care to fix sup, sInf, bot, top
__ := completeLatticeOfSup my_T _
Equations
- completeLatticeOfSup α isLUB_sSup = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Any CompleteSemilatticeSup
is in fact a CompleteLattice
.
Note that this construction has bad definitional properties:
see the doc-string on completeLatticeOfSup
.
Equations
A complete linear order is a linear order whose lattice structure is complete.
- sup : α → α → α
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- inf : α → α → α
- sSup : Set α → α
- sInf : Set α → α
- top : α
- bot : α
- himp : α → α → α
(a ⇨ ·)
is right adjoint to(a ⊓ ·)
- compl : α → α
aᶜ
is defined asa ⇨ ⊥
- sdiff : α → α → α
- hnot : α → α
(· \ a)
is right adjoint to(· ⊔ a)
⊤ \ a
is¬a
A linear order is total.
- decidableLE : DecidableRel fun (x1 x2 : α) => x1 ≤ x2
In a linearly ordered type, we assume the order relations are all decidable.
- decidableEq : DecidableEq α
In a linearly ordered type, we assume the order relations are all decidable.
- decidableLT : DecidableRel fun (x1 x2 : α) => x1 < x2
In a linearly ordered type, we assume the order relations are all decidable.
Instances
- Bool.completeLinearOrder
- ENNReal.instCompleteLinearOrder
- Fin.completeLinearOrder
- LowerSet.instCompleteLinearOrder
- OrderDual.instCompleteLinearOrder
- PUnit.instCompleteLinearOrder
- PartENat.instCompleteLinearOrder
- Prop.instCompleteLinearOrder
- UpperSet.instCompleteLinearOrder
- WithBot.WithTop.completeLinearOrder
- WithTop.WithBot.completeLinearOrder
- WithTop.instCompleteLinearOrder
- instCompleteLinearOrderENat
- instCompleteLinearOrderEReal
- instCompleteLinearOrderWithBotENat
A linear order is total.
Equations
- CompleteLinearOrder.toLinearOrder = LinearOrder.mk ⋯ CompleteLinearOrder.decidableLE CompleteLinearOrder.decidableEq CompleteLinearOrder.decidableLT ⋯ ⋯ ⋯
Equations
- OrderDual.instCompleteLattice = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- OrderDual.instCompleteLinearOrder = CompleteLinearOrder.mk ⋯ ⋯ ⋯ ⋯ ⋯ LinearOrder.decidableLE LinearOrder.decidableEq LinearOrder.decidableLT
Introduction rule to prove that b
is the supremum of s
: it suffices to check that b
is larger than all elements of s
, and that this is not the case of any w < b
.
See csSup_eq_of_forall_le_of_forall_lt_exists_gt
for a version in conditionally complete
lattices.
Introduction rule to prove that b
is the infimum of s
: it suffices to check that b
is smaller than all elements of s
, and that this is not the case of any w > b
.
See csInf_eq_of_forall_ge_of_forall_gt_exists_lt
for a version in conditionally complete
lattices.
Introduction rule to prove that b
is the supremum of f
: it suffices to check that b
is larger than f i
for all i
, and that this is not the case of any w<b
.
See ciSup_eq_of_forall_le_of_forall_lt_exists_gt
for a version in conditionally complete
lattices.
Introduction rule to prove that b
is the infimum of f
: it suffices to check that b
is smaller than f i
for all i
, and that this is not the case of any w>b
.
See ciInf_eq_of_forall_ge_of_forall_gt_exists_lt
for a version in conditionally complete
lattices.
A version of iSup_option
useful for rewriting right-to-left.
A version of iInf_option
useful for rewriting right-to-left.
When taking the supremum of f : ι → α
, the elements of ι
on which f
gives ⊥
can be
dropped, without changing the result.
When taking the infimum of f : ι → α
, the elements of ι
on which f
gives ⊤
can be
dropped, without changing the result.
Instances #
Equations
- One or more equations did not get rendered due to their size.
Equations
- Pi.instCompleteLattice = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Alias of Monotone.sSup
.
Alias of Monotone.sInf
.
Equations
- Prod.instCompleteLattice = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
This is a weaker version of sup_sInf_eq
This is a weaker version of inf_sSup_eq
This is a weaker version of sInf_sup_eq
This is a weaker version of sSup_inf_eq
Pullback a CompleteLattice
along an injection.
Equations
- Function.Injective.completeLattice f hf map_sup map_inf map_sSup map_sInf map_top map_bot = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ULift.supSet = { sSup := fun (s : Set (ULift.{?u.17, ?u.16} α)) => { down := sSup (ULift.up ⁻¹' s) } }
Equations
- ULift.infSet = { sInf := fun (s : Set (ULift.{?u.17, ?u.16} α)) => { down := sInf (ULift.up ⁻¹' s) } }
Equations
- ULift.instCompleteLattice = Function.Injective.completeLattice ULift.down ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- One or more equations did not get rendered due to their size.