Lattice homomorphisms #
This file defines (bounded) lattice homomorphisms.
We use the DFunLike design, so each type of morphisms has a companion typeclass which is meant to
be satisfied by itself and all stricter types.
Types of morphisms #
SupHom: Maps which preserve⊔.InfHom: Maps which preserve⊓.SupBotHom: Finitary supremum homomorphisms. Maps which preserve⊔and⊥.InfTopHom: Finitary infimum homomorphisms. Maps which preserve⊓and⊤.LatticeHom: Lattice homomorphisms. Maps which preserve⊔and⊓.BoundedLatticeHom: Bounded lattice homomorphisms. Maps which preserve⊤,⊥,⊔and⊓.
Typeclasses #
TODO #
Do we need more intersections between BotHom, TopHom and lattice homomorphisms?
The type of lattice homomorphisms from α to β.
- toFun : α → β
A
LatticeHompreserves infima.
Instances For
A LatticeHom preserves infima.
The type of bounded lattice homomorphisms from α to β.
- toFun : α → β
A
BoundedLatticeHompreserves the top element.A
BoundedLatticeHompreserves the bottom element.
Instances For
A BoundedLatticeHom preserves the top element.
A BoundedLatticeHom preserves the bottom element.
SupHomClass F α β states that F is a type of ⊔-preserving morphisms.
You should extend this class when you extend SupHom.
A
SupHomClassmorphism preserves suprema.
Instances
A SupHomClass morphism preserves suprema.
InfHomClass F α β states that F is a type of ⊓-preserving morphisms.
You should extend this class when you extend InfHom.
An
InfHomClassmorphism preserves infima.
Instances
An InfHomClass morphism preserves infima.
SupBotHomClass F α β states that F is a type of finitary supremum-preserving morphisms.
You should extend this class when you extend SupBotHom.
A
SupBotHomClassmorphism preserves the bottom element.
Instances
A SupBotHomClass morphism preserves the bottom element.
InfTopHomClass F α β states that F is a type of finitary infimum-preserving morphisms.
You should extend this class when you extend SupBotHom.
An
InfTopHomClassmorphism preserves the top element.
Instances
An InfTopHomClass morphism preserves the top element.
LatticeHomClass F α β states that F is a type of lattice morphisms.
You should extend this class when you extend LatticeHom.
A
LatticeHomClassmorphism preserves infima.
Instances
A LatticeHomClass morphism preserves infima.
BoundedLatticeHomClass F α β states that F is a type of bounded lattice morphisms.
You should extend this class when you extend BoundedLatticeHom.
A
BoundedLatticeHomClassmorphism preserves the top element.A
BoundedLatticeHomClassmorphism preserves the bottom element.
Instances
A BoundedLatticeHomClass morphism preserves the top element.
A BoundedLatticeHomClass morphism preserves the bottom element.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
We can regard an injective map preserving binary infima as an order embedding.
Equations
Instances For
Special case of map_compl for boolean algebras.
Special case of map_sdiff for boolean algebras.
Special case of map_symmDiff for boolean algebras.
Equations
- instCoeTCLatticeHomOfLatticeHomClass = { coe := fun (f : F) => { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ } }
Equations
- One or more equations did not get rendered due to their size.
Supremum homomorphisms #
Equations
- ⋯ = ⋯
Equations
- SupHom.instInhabited α = { default := SupHom.id α }
The constant function as a SupHom.
Equations
- SupHom.const α b = { toFun := fun (x : α) => b, map_sup' := ⋯ }
Instances For
Equations
- SupHom.instSemilatticeSup = Function.Injective.semilatticeSup (fun (f : SupHom α β) => ⇑f) ⋯ ⋯
Equations
- SupHom.instBot = { bot := SupHom.const α ⊥ }
Equations
- SupHom.instTop = { top := SupHom.const α ⊤ }
Equations
- SupHom.instOrderBot = OrderBot.lift DFunLike.coe ⋯ ⋯
Equations
- SupHom.instOrderTop = OrderTop.lift DFunLike.coe ⋯ ⋯
Equations
- SupHom.instBoundedOrder = BoundedOrder.lift DFunLike.coe ⋯ ⋯ ⋯
Infimum homomorphisms #
Equations
- ⋯ = ⋯
Equations
- InfHom.instInhabited α = { default := InfHom.id α }
The constant function as an InfHom.
Equations
- InfHom.const α b = { toFun := fun (x : α) => b, map_inf' := ⋯ }
Instances For
Equations
- InfHom.instSemilatticeInf = Function.Injective.semilatticeInf (fun (f : InfHom α β) => ⇑f) ⋯ ⋯
Equations
- InfHom.instBot = { bot := InfHom.const α ⊥ }
Equations
- InfHom.instTop = { top := InfHom.const α ⊤ }
Equations
- InfHom.instOrderBot = OrderBot.lift DFunLike.coe ⋯ ⋯
Equations
- InfHom.instOrderTop = OrderTop.lift DFunLike.coe ⋯ ⋯
Equations
- InfHom.instBoundedOrder = BoundedOrder.lift DFunLike.coe ⋯ ⋯ ⋯
Finitary supremum homomorphisms #
Copy of a SupBotHom with a new toFun equal to the old one. Useful to fix definitional
equalities.
Equations
- f.copy f' h = let __src := f.toBotHom.copy f' h; { toSupHom := f.copy f' h, map_bot' := ⋯ }
Instances For
Equations
- SupBotHom.instInhabited α = { default := SupBotHom.id α }
Composition of SupBotHoms as a SupBotHom.
Equations
- f.comp g = let __src := f.comp g.toSupHom; let __src_1 := f.toBotHom.comp g.toBotHom; { toSupHom := __src, map_bot' := ⋯ }
Instances For
Equations
- SupBotHom.instSemilatticeSup = Function.Injective.semilatticeSup (fun (f : SupBotHom α β) => ⇑f) ⋯ ⋯
Equations
- SupBotHom.instOrderBot = OrderBot.mk ⋯
Finitary infimum homomorphisms #
Copy of an InfTopHom with a new toFun equal to the old one. Useful to fix definitional
equalities.
Equations
- f.copy f' h = let __src := f.toTopHom.copy f' h; { toInfHom := f.copy f' h, map_top' := ⋯ }
Instances For
Equations
- InfTopHom.instInhabited α = { default := InfTopHom.id α }
Composition of InfTopHoms as an InfTopHom.
Equations
- f.comp g = let __src := f.comp g.toInfHom; let __src_1 := f.toTopHom.comp g.toTopHom; { toInfHom := __src, map_top' := ⋯ }
Instances For
Equations
- InfTopHom.instSemilatticeInf = Function.Injective.semilatticeInf (fun (f : InfTopHom α β) => ⇑f) ⋯ ⋯
Equations
- InfTopHom.instOrderTop = OrderTop.mk ⋯
Lattice homomorphisms #
Reinterpret a LatticeHom as an InfHom.
Equations
- f.toInfHom = { toFun := f.toFun, map_inf' := ⋯ }
Instances For
Equations
- LatticeHom.instFunLike = { coe := fun (f : LatticeHom α β) => f.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Copy of a LatticeHom with a new toFun equal to the old one. Useful to fix definitional
equalities.
Equations
- f.copy f' h = let __src := f.copy f' h; let __src_1 := f.toInfHom.copy f' h; { toSupHom := __src, map_inf' := ⋯ }
Instances For
id as a LatticeHom.
Equations
- LatticeHom.id α = { toFun := id, map_sup' := ⋯, map_inf' := ⋯ }
Instances For
Equations
- LatticeHom.instInhabited α = { default := LatticeHom.id α }
Composition of LatticeHoms as a LatticeHom.
Equations
- f.comp g = let __src := f.comp g.toSupHom; let __src_1 := f.toInfHom.comp g.toInfHom; { toSupHom := __src, map_inf' := ⋯ }
Instances For
An order homomorphism from a linear order is a lattice homomorphism.
Equations
- ⋯ = ⋯
Reinterpret an order homomorphism to a linear order as a LatticeHom.
Equations
- OrderHomClass.toLatticeHom α β f = { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ }
Instances For
Bounded lattice homomorphisms #
Reinterpret a BoundedLatticeHom as a SupBotHom.
Equations
- f.toSupBotHom = { toSupHom := f.toSupHom, map_bot' := ⋯ }
Instances For
Reinterpret a BoundedLatticeHom as an InfTopHom.
Equations
- f.toInfTopHom = { toFun := f.toFun, map_inf' := ⋯, map_top' := ⋯ }
Instances For
Reinterpret a BoundedLatticeHom as a BoundedOrderHom.
Equations
- f.toBoundedOrderHom = let __src := ↑f.toLatticeHom; { toFun := f.toFun, monotone' := ⋯, map_top' := ⋯, map_bot' := ⋯ }
Instances For
Equations
- BoundedLatticeHom.instFunLike = { coe := fun (f : BoundedLatticeHom α β) => f.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Copy of a BoundedLatticeHom with a new toFun equal to the old one. Useful to fix
definitional equalities.
Equations
- f.copy f' h = let __src := f.copy f' h; let __src_1 := f.toBoundedOrderHom.copy f' h; { toLatticeHom := __src, map_top' := ⋯, map_bot' := ⋯ }
Instances For
id as a BoundedLatticeHom.
Equations
- BoundedLatticeHom.id α = let __src := LatticeHom.id α; let __src_1 := BoundedOrderHom.id α; { toLatticeHom := __src, map_top' := ⋯, map_bot' := ⋯ }
Instances For
Equations
- BoundedLatticeHom.instInhabited α = { default := BoundedLatticeHom.id α }
Composition of BoundedLatticeHoms as a BoundedLatticeHom.
Equations
- f.comp g = let __src := f.comp g.toLatticeHom; let __src_1 := f.toBoundedOrderHom.comp g.toBoundedOrderHom; { toLatticeHom := __src, map_top' := ⋯, map_bot' := ⋯ }
Instances For
Dual homs #
Reinterpret a supremum homomorphism as an infimum homomorphism between the dual lattices.
Equations
Instances For
Reinterpret an infimum homomorphism as a supremum homomorphism between the dual lattices.
Equations
Instances For
Reinterpret a lattice homomorphism as a lattice homomorphism between the dual lattices.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reinterpret a bounded lattice homomorphism as a bounded lattice homomorphism between the dual bounded lattices.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Prod #
Natural projection homomorphism from α × β to α.
Equations
- LatticeHom.fst = { toFun := Prod.fst, map_sup' := ⋯, map_inf' := ⋯ }
Instances For
Natural projection homomorphism from α × β to β.
Equations
- LatticeHom.snd = { toFun := Prod.snd, map_sup' := ⋯, map_inf' := ⋯ }
Instances For
Pi #
Evaluation as a lattice homomorphism.
Equations
- Pi.evalLatticeHom i = { toFun := Function.eval i, map_sup' := ⋯, map_inf' := ⋯ }
Instances For
Adjoins a ⊤ to the domain and codomain of a SupHom.
Equations
- f.withTop = { toFun := WithTop.map ⇑f, map_sup' := ⋯ }
Instances For
Adjoins a ⊥ to the domain and codomain of a SupHom.
Equations
- f.withBot = { toFun := Option.map ⇑f, map_sup' := ⋯, map_bot' := ⋯ }
Instances For
Adjoins a ⊤ to the codomain of a SupHom.
Equations
- f.withTop' = { toFun := fun (a : WithTop α) => Option.elim a ⊤ ⇑f, map_sup' := ⋯ }
Instances For
Adjoins a ⊥ to the domain of a SupHom.
Equations
- f.withBot' = { toFun := fun (a : WithBot α) => Option.elim a ⊥ ⇑f, map_sup' := ⋯, map_bot' := ⋯ }
Instances For
Adjoins a ⊤ to the domain and codomain of an InfHom.
Equations
- f.withTop = { toFun := Option.map ⇑f, map_inf' := ⋯, map_top' := ⋯ }
Instances For
Adjoins a ⊥ to the domain and codomain of an InfHom.
Equations
- f.withBot = { toFun := Option.map ⇑f, map_inf' := ⋯ }
Instances For
Adjoins a ⊤ to the codomain of an InfHom.
Equations
- f.withTop' = { toFun := fun (a : WithTop α) => Option.elim a ⊤ ⇑f, map_inf' := ⋯, map_top' := ⋯ }
Instances For
Adjoins a ⊥ to the codomain of an InfHom.
Equations
- f.withBot' = { toFun := fun (a : WithBot α) => Option.elim a ⊥ ⇑f, map_inf' := ⋯ }
Instances For
Adjoins a ⊤ to the domain and codomain of a LatticeHom.
Equations
- f.withTop = let __src := f.toInfHom.withTop; { toSupHom := f.withTop, map_inf' := ⋯ }
Instances For
Adjoins a ⊥ to the domain and codomain of a LatticeHom.
Equations
- f.withBot = let __src := f.toInfHom.withBot; { toFun := ⇑f.withBot, map_sup' := ⋯, map_inf' := ⋯ }
Instances For
Adjoins a ⊤ and ⊥ to the domain and codomain of a LatticeHom.
Equations
- f.withTopWithBot = { toLatticeHom := f.withBot.withTop, map_top' := ⋯, map_bot' := ⋯ }
Instances For
Adjoins a ⊥ to the codomain of a LatticeHom.
Equations
- f.withTop' = let __src := f.withTop'; let __src_1 := f.toInfHom.withTop'; { toSupHom := __src, map_inf' := ⋯ }
Instances For
Adjoins a ⊥ to the domain and codomain of a LatticeHom.
Equations
- f.withBot' = let __src := f.withBot'; let __src_1 := f.toInfHom.withBot'; { toSupHom := __src.toSupHom, map_inf' := ⋯ }
Instances For
Adjoins a ⊤ and ⊥ to the codomain of a LatticeHom.
Equations
- f.withTopWithBot' = { toLatticeHom := f.withBot'.withTop', map_top' := ⋯, map_bot' := ⋯ }