Theory of complete lattices
Main definitions
Sup
andInf
are the supremum and the infimum of a set;supr (f : ι → α)
andinfi (f : ι → α)
are indexed supremum and infimum of a function, defined asSup
andInf
of the range of this function;class complete_lattice
: a bounded lattice such thatSup s
is always the least upper boundary ofs
andInf s
is always the greatest lower boundary ofs
;class complete_linear_order
: a linear ordered complete lattice.
Naming conventions
We use Sup
/Inf
/supr
/infi
for the corresponding functions in the statement. Sometimes we
also use bsupr
/binfi
for "boundedsupremum or infimum, i.e. one of
⨆ i ∈ s, f i,
⨆ i (hi : p i), f i, or more generally
⨆ i (hi : p i), f i hi`.
Notation
- Inf : set α → α
class for the Inf
operator
Instances
- complete_lattice.to_has_Inf
- conditionally_complete_lattice.to_has_Inf
- order_dual.has_Inf
- pi.has_Inf
- prod.has_Inf
- submonoid.has_Inf
- add_submonoid.has_Inf
- subgroup.has_Inf
- add_subgroup.has_Inf
- submodule.has_Inf
- setoid.has_Inf
- con.has_Inf
- add_con.has_Inf
- subsemiring.has_Inf
- with_top.has_Inf
- with_bot.has_Inf
- nat.has_Inf
- real.has_Inf
- nnreal.has_Inf
- uniform_space.has_Inf
- convex_cone.has_Inf
- ereal.has_Inf
- measure_theory.measure.has_Inf
Equations
- order_dual.has_Sup α = {Sup := has_Inf.Inf _inst_1}
Equations
- order_dual.has_Inf α = {Inf := has_Sup.Sup _inst_1}
- sup : α → α → α
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- le_sup_left : ∀ (a b : α), a ≤ a ⊔ b
- le_sup_right : ∀ (a b : α), b ≤ a ⊔ b
- sup_le : ∀ (a b c_1 : α), a ≤ c_1 → b ≤ c_1 → a ⊔ b ≤ c_1
- inf : α → α → α
- inf_le_left : ∀ (a b : α), a ⊓ b ≤ a
- inf_le_right : ∀ (a b : α), a ⊓ b ≤ b
- le_inf : ∀ (a b c_1 : α), a ≤ b → a ≤ c_1 → a ≤ b ⊓ c_1
- top : α
- le_top : ∀ (a : α), a ≤ ⊤
- bot : α
- bot_le : ∀ (a : α), ⊥ ≤ a
- Sup : set α → α
- Inf : set α → α
- le_Sup : ∀ (s : set α) (a : α), a ∈ s → a ≤ complete_lattice.Sup s
- Sup_le : ∀ (s : set α) (a : α), (∀ (b : α), b ∈ s → b ≤ a) → complete_lattice.Sup s ≤ a
- Inf_le : ∀ (s : set α) (a : α), a ∈ s → complete_lattice.Inf s ≤ a
- le_Inf : ∀ (s : set α) (a : α), (∀ (b : α), b ∈ s → a ≤ b) → a ≤ complete_lattice.Inf s
A complete lattice is a bounded lattice which has suprema and infima for every subset.
Instances
- complete_linear_order.to_complete_lattice
- complete_distrib_lattice.to_complete_lattice
- order_dual.complete_lattice
- complete_lattice_Prop
- pi.complete_lattice
- prod.complete_lattice
- set.lattice_set
- submonoid.complete_lattice
- add_submonoid.complete_lattice
- subgroup.complete_lattice
- add_subgroup.complete_lattice
- submodule.complete_lattice
- setoid.complete_lattice
- con.complete_lattice
- add_con.complete_lattice
- subsemiring.complete_lattice
- algebra.complete_lattice
- rel.complete_lattice
- with_top.with_bot.complete_lattice
- filter.complete_lattice
- topological_space.complete_lattice
- topological_space.opens.complete_lattice
- affine_subspace.complete_lattice
- uniform_space.complete_lattice
- convex_cone.complete_lattice
- ereal.complete_lattice
- setoid.partition.complete_lattice
- measurable_space.complete_lattice
- measure_theory.outer_measure.complete_lattice
- measure_theory.measure.complete_lattice
Create a complete_lattice
from a partial_order
and Inf
function
that returns the greatest lower bound of a set. Usually this constructor provides
poor definitional equalities, so it should be used with
.. complete_lattice_of_Inf α _
.
Equations
- complete_lattice_of_Inf α is_glb_Inf = {sup := λ (a b : α), has_Inf.Inf {x : α | a ≤ x ∧ b ≤ x}, le := partial_order.le H1, lt := partial_order.lt H1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := λ (a b : α), has_Inf.Inf {a, b}, inf_le_left := _, inf_le_right := _, le_inf := _, top := has_Inf.Inf ∅, le_top := _, bot := has_Inf.Inf set.univ, bot_le := _, Sup := λ (s : set α), has_Inf.Inf (upper_bounds s), Inf := has_Inf.Inf H2, le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _}
Create a complete_lattice
from a partial_order
and Sup
function
that returns the least upper bound of a set. Usually this constructor provides
poor definitional equalities, so it should be used with
.. complete_lattice_of_Sup α _
.
Equations
- complete_lattice_of_Sup α is_lub_Sup = {sup := λ (a b : α), has_Sup.Sup {a, b}, le := partial_order.le H1, lt := partial_order.lt H1, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := λ (a b : α), has_Sup.Sup {x : α | x ≤ a ∧ x ≤ b}, inf_le_left := _, inf_le_right := _, le_inf := _, top := has_Sup.Sup set.univ, le_top := _, bot := has_Sup.Sup ∅, bot_le := _, Sup := has_Sup.Sup H2, Inf := λ (s : set α), has_Sup.Sup (lower_bounds s), le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _}
- sup : α → α → α
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c_1 : α), a ≤ b → b ≤ c_1 → a ≤ c_1
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- le_sup_left : ∀ (a b : α), a ≤ a ⊔ b
- le_sup_right : ∀ (a b : α), b ≤ a ⊔ b
- sup_le : ∀ (a b c_1 : α), a ≤ c_1 → b ≤ c_1 → a ⊔ b ≤ c_1
- inf : α → α → α
- inf_le_left : ∀ (a b : α), a ⊓ b ≤ a
- inf_le_right : ∀ (a b : α), a ⊓ b ≤ b
- le_inf : ∀ (a b c_1 : α), a ≤ b → a ≤ c_1 → a ≤ b ⊓ c_1
- top : α
- le_top : ∀ (a : α), a ≤ ⊤
- bot : α
- bot_le : ∀ (a : α), ⊥ ≤ a
- Sup : set α → α
- Inf : set α → α
- le_Sup : ∀ (s : set α) (a : α), a ∈ s → a ≤ complete_linear_order.Sup s
- Sup_le : ∀ (s : set α) (a : α), (∀ (b : α), b ∈ s → b ≤ a) → complete_linear_order.Sup s ≤ a
- Inf_le : ∀ (s : set α) (a : α), a ∈ s → complete_linear_order.Inf s ≤ a
- le_Inf : ∀ (s : set α) (a : α), (∀ (b : α), b ∈ s → a ≤ b) → a ≤ complete_linear_order.Inf s
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- decidable_le : decidable_rel has_le.le
- decidable_eq : decidable_eq α
- decidable_lt : decidable_rel has_lt.lt
A complete linear order is a linear order whose lattice structure is complete.
Equations
- order_dual.complete_lattice α = {sup := bounded_lattice.sup (order_dual.bounded_lattice α), le := bounded_lattice.le (order_dual.bounded_lattice α), lt := bounded_lattice.lt (order_dual.bounded_lattice α), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := bounded_lattice.inf (order_dual.bounded_lattice α), inf_le_left := _, inf_le_right := _, le_inf := _, top := bounded_lattice.top (order_dual.bounded_lattice α), le_top := _, bot := bounded_lattice.bot (order_dual.bounded_lattice α), bot_le := _, Sup := has_Sup.Sup (order_dual.has_Sup α), Inf := has_Inf.Inf (order_dual.has_Inf α), le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _}
Equations
- order_dual.complete_linear_order α = {sup := complete_lattice.sup (order_dual.complete_lattice α), le := complete_lattice.le (order_dual.complete_lattice α), lt := complete_lattice.lt (order_dual.complete_lattice α), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := complete_lattice.inf (order_dual.complete_lattice α), inf_le_left := _, inf_le_right := _, le_inf := _, top := complete_lattice.top (order_dual.complete_lattice α), le_top := _, bot := complete_lattice.bot (order_dual.complete_lattice α), bot_le := _, Sup := complete_lattice.Sup (order_dual.complete_lattice α), Inf := complete_lattice.Inf (order_dual.complete_lattice α), le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _, le_total := _, decidable_le := decidable_linear_order.decidable_le (order_dual.decidable_linear_order α), decidable_eq := decidable_linear_order.decidable_eq (order_dual.decidable_linear_order α), decidable_lt := decidable_linear_order.decidable_lt (order_dual.decidable_linear_order α)}
Instances
Equations
- complete_lattice_Prop = {sup := bounded_distrib_lattice.sup bounded_distrib_lattice_Prop, le := bounded_distrib_lattice.le bounded_distrib_lattice_Prop, lt := bounded_distrib_lattice.lt bounded_distrib_lattice_Prop, le_refl := complete_lattice_Prop._proof_1, le_trans := complete_lattice_Prop._proof_2, lt_iff_le_not_le := complete_lattice_Prop._proof_3, le_antisymm := complete_lattice_Prop._proof_4, le_sup_left := complete_lattice_Prop._proof_5, le_sup_right := complete_lattice_Prop._proof_6, sup_le := complete_lattice_Prop._proof_7, inf := bounded_distrib_lattice.inf bounded_distrib_lattice_Prop, inf_le_left := complete_lattice_Prop._proof_8, inf_le_right := complete_lattice_Prop._proof_9, le_inf := complete_lattice_Prop._proof_10, top := bounded_distrib_lattice.top bounded_distrib_lattice_Prop, le_top := complete_lattice_Prop._proof_11, bot := bounded_distrib_lattice.bot bounded_distrib_lattice_Prop, bot_le := complete_lattice_Prop._proof_12, Sup := λ (s : set Prop), ∃ (a : Prop) (H : a ∈ s), a, Inf := λ (s : set Prop), ∀ (a : Prop), a ∈ s → a, le_Sup := complete_lattice_Prop._proof_13, Sup_le := complete_lattice_Prop._proof_14, Inf_le := complete_lattice_Prop._proof_15, le_Inf := complete_lattice_Prop._proof_16}
Equations
- pi.complete_lattice = {sup := bounded_lattice.sup pi.bounded_lattice, le := bounded_lattice.le pi.bounded_lattice, lt := bounded_lattice.lt pi.bounded_lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := bounded_lattice.inf pi.bounded_lattice, inf_le_left := _, inf_le_right := _, le_inf := _, top := bounded_lattice.top pi.bounded_lattice, le_top := _, bot := bounded_lattice.bot pi.bounded_lattice, bot_le := _, Sup := has_Sup.Sup pi.has_Sup, Inf := has_Inf.Inf pi.has_Inf, le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _}
Equations
- prod.has_Inf α β = {Inf := λ (s : set (α × β)), (has_Inf.Inf (prod.fst '' s), has_Inf.Inf (prod.snd '' s))}
Equations
- prod.has_Sup α β = {Sup := λ (s : set (α × β)), (has_Sup.Sup (prod.fst '' s), has_Sup.Sup (prod.snd '' s))}
Equations
- prod.complete_lattice α β = {sup := bounded_lattice.sup (prod.bounded_lattice α β), le := bounded_lattice.le (prod.bounded_lattice α β), lt := bounded_lattice.lt (prod.bounded_lattice α β), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := bounded_lattice.inf (prod.bounded_lattice α β), inf_le_left := _, inf_le_right := _, le_inf := _, top := bounded_lattice.top (prod.bounded_lattice α β), le_top := _, bot := bounded_lattice.bot (prod.bounded_lattice α β), bot_le := _, Sup := has_Sup.Sup (prod.has_Sup α β), Inf := has_Inf.Inf (prod.has_Inf α β), le_Sup := _, Sup_le := _, Inf_le := _, le_Inf := _}