Basic properties of lattices #
This file contains some basic results, alternative constructors and instances for (semi)lattices.
For the definitions, see Mathlib.Order.Defs.Lattice.
Main declarations #
SemilatticeSup.mk': an alternative constructor forSemilatticeSupvia proofs that⊔is commutative, associative and idempotent.SemilatticeSup.mk': an alternative constructor forSemilatticeInfvia proofs that⊓is commutative, associative and idempotent.Lattice.mk': an alternative constructor forLatticevia proofs that⊔and⊓are commutative, associative and satisfy a pair of "absorption laws".
TODO #
- Alternative constructors for distributive lattices from the other distributive properties
Tags #
semilattice, lattice
Semilattices #
A type with a commutative, associative and idempotent binary sup operation has the structure of a
join-semilattice.
The partial order is defined so that a ≤ b unfolds to a ⊔ b = b; cf. sup_eq_right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type with a commutative, associative and idempotent binary inf operation has the structure of a
meet-semilattice.
The partial order is defined so that a ≤ b unfolds to b ⊓ a = a; cf. inf_eq_right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- OrderDual.instSemilatticeSup α = { toPartialOrder := OrderDual.instPartialOrder α, sup := fun (a b : αᵒᵈ) => SemilatticeInf.inf a b, le_sup_left := ⋯, le_sup_right := ⋯, sup_le := ⋯ }
Equations
- OrderDual.instSemilatticeInf α = { toPartialOrder := OrderDual.instPartialOrder α, inf := fun (a b : αᵒᵈ) => SemilatticeSup.sup a b, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
Lattices #
Equations
- OrderDual.instLattice α = { toSemilatticeSup := OrderDual.instSemilatticeSup α, inf := SemilatticeInf.inf, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
The partial orders from SemilatticeSup_mk' and SemilatticeInf_mk' agree
if sup and inf satisfy the lattice absorption laws sup_inf_self (a ⊔ a ⊓ b = a)
and inf_sup_self (a ⊓ (a ⊔ b) = a).
A type with a pair of commutative and associative binary operations which satisfy two absorption laws relating the two operations has the structure of a lattice.
The partial order is defined so that a ≤ b unfolds to a ⊔ b = b; cf. sup_eq_right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- OrderDual.instDistribLattice α = { toLattice := OrderDual.instLattice α, le_sup_inf := ⋯ }
Lattices derived from linear orders #
Equations
- LinearOrder.toLattice = { toPartialOrder := inst✝.toPartialOrder, sup := max, le_sup_left := ⋯, le_sup_right := ⋯, sup_le := ⋯, inf := min, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
A lattice with total order is a linear order.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instDistribLatticeOfLinearOrder = { toLattice := LinearOrder.toLattice, le_sup_inf := ⋯ }
Equations
Equations
Dual order #
Function lattices #
Equations
- Pi.instMaxForall_mathlib = { max := fun (f g : (i : ι) → α' i) (i : ι) => f i ⊔ g i }
Equations
- Pi.instMinForall_mathlib = { min := fun (f g : (i : ι) → α' i) (i : ι) => f i ⊓ g i }
Equations
- Pi.instSemilatticeSup = { toPartialOrder := Pi.partialOrder, sup := fun (x y : (i : ι) → α' i) (i : ι) => x i ⊔ y i, le_sup_left := ⋯, le_sup_right := ⋯, sup_le := ⋯ }
Equations
- Pi.instSemilatticeInf = { toPartialOrder := Pi.partialOrder, inf := fun (x y : (i : ι) → α' i) (i : ι) => x i ⊓ y i, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
Equations
- Pi.instLattice = { toSemilatticeSup := Pi.instSemilatticeSup, inf := SemilatticeInf.inf, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
Equations
- Pi.instDistribLattice = { toLattice := Pi.instLattice, le_sup_inf := ⋯ }
Monotone functions and lattices #
Pointwise supremum of two monotone functions is a monotone function.
Pointwise infimum of two monotone functions is a monotone function.
Pointwise maximum of two monotone functions is a monotone function.
Pointwise minimum of two monotone functions is a monotone function.
Pointwise supremum of two monotone functions is a monotone function.
Pointwise infimum of two monotone functions is a monotone function.
Pointwise maximum of two monotone functions is a monotone function.
Pointwise minimum of two monotone functions is a monotone function.
Pointwise supremum of two antitone functions is an antitone function.
Pointwise infimum of two antitone functions is an antitone function.
Pointwise maximum of two antitone functions is an antitone function.
Pointwise minimum of two antitone functions is an antitone function.
Pointwise supremum of two antitone functions is an antitone function.
Pointwise infimum of two antitone functions is an antitone function.
Pointwise maximum of two antitone functions is an antitone function.
Pointwise minimum of two antitone functions is an antitone function.
Products of (semi-)lattices #
Equations
- Prod.instLattice α β = { toSemilatticeSup := Prod.instSemilatticeSup α β, inf := SemilatticeInf.inf, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
Equations
- Prod.instDistribLattice α β = { toLattice := Prod.instLattice α β, le_sup_inf := ⋯ }
Subtypes of (semi-)lattices #
A subtype forms a ⊔-semilattice if ⊔ preserves the property.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A subtype forms a ⊓-semilattice if ⊓ preserves the property.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A subtype forms a lattice if ⊔ and ⊓ preserve the property.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with ⊔ is a SemilatticeSup, if it admits an injective map that
preserves ⊔ to a SemilatticeSup.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with ⊓ is a SemilatticeInf, if it admits an injective map that
preserves ⊓ to a SemilatticeInf.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with ⊔ and ⊓ is a Lattice, if it admits an injective map that
preserves ⊔ and ⊓ to a Lattice.
See note [reducible non-instances].
Equations
- One or more equations did not get rendered due to their size.
Instances For
A type endowed with ⊔ and ⊓ is a DistribLattice, if it admits an injective map that
preserves ⊔ and ⊓ to a DistribLattice.
See note [reducible non-instances].
Equations
- Function.Injective.distribLattice f hf_inj le lt map_sup map_inf = { toLattice := Function.Injective.lattice f hf_inj ⋯ ⋯ map_sup map_inf, le_sup_inf := ⋯ }
Instances For
A subtype forms a distributive lattice if ⊔ and ⊓ preserve the property.
See note [reducible non-instances].
Equations
- Subtype.distribLattice Psup Pinf = Function.Injective.distribLattice (fun (a : Subtype P) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
Transfer PartialOrder across an Equiv.
Equations
- e.partialOrder = Function.Injective.partialOrder ⇑e ⋯ ⋯ ⋯
Instances For
Transfer LinearOrder across an Equiv.
Equations
- e.linearOrder = Function.Injective.linearOrder ⇑e ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
Transfer SemilatticeSup across an Equiv.
Equations
- e.semilatticeSup = Function.Injective.semilatticeSup ⇑e ⋯ ⋯ ⋯ ⋯
Instances For
Transfer SemilatticeInf across an Equiv.
Equations
- e.semilatticeInf = Function.Injective.semilatticeInf ⇑e ⋯ ⋯ ⋯ ⋯
Instances For
Transfer DistribLattice across an Equiv.
Equations
- e.distribLattice = Function.Injective.distribLattice ⇑e ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
Equations
Equations
Equations
- ULift.instLattice = { toSemilatticeSup := ULift.instSemilatticeSup, inf := SemilatticeInf.inf, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
Equations
Equations
Equations
Equations
Alias of the reverse direction of pairwise_iff_lt.
Alias of the reverse direction of pairwise_iff_gt.