Lattice homomorphisms #
This file defines (bounded) lattice homomorphisms.
We use the FunLike
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?
- toFun : α → β
The underlying function of a
SupHom
- map_sup' : ∀ (a b : α), SupHom.toFun s (a ⊔ b) = SupHom.toFun s a ⊔ SupHom.toFun s b
A
SupHom
preserves suprema.
The type of ⊔
-preserving functions from α
to β
.
Instances For
- toFun : α → β
The underlying function of an
InfHom
- map_inf' : ∀ (a b : α), InfHom.toFun s (a ⊓ b) = InfHom.toFun s a ⊓ InfHom.toFun s b
An
InfHom
preserves infima.
The type of ⊓
-preserving functions from α
to β
.
Instances For
- toFun : α → β
- map_sup' : ∀ (a b : α), SupHom.toFun s.toSupHom (a ⊔ b) = SupHom.toFun s.toSupHom a ⊔ SupHom.toFun s.toSupHom b
- map_bot' : SupHom.toFun s.toSupHom ⊥ = ⊥
A
SupBotHom
preserves the bottom element.
The type of finitary supremum-preserving homomorphisms from α
to β
.
Instances For
- toFun : α → β
- map_inf' : ∀ (a b : α), InfHom.toFun s.toInfHom (a ⊓ b) = InfHom.toFun s.toInfHom a ⊓ InfHom.toFun s.toInfHom b
- map_top' : InfHom.toFun s.toInfHom ⊤ = ⊤
An
InfTopHom
preserves the top element.
The type of finitary infimum-preserving homomorphisms from α
to β
.
Instances For
- toFun : α → β
- map_sup' : ∀ (a b : α), SupHom.toFun s.toSupHom (a ⊔ b) = SupHom.toFun s.toSupHom a ⊔ SupHom.toFun s.toSupHom b
- map_inf' : ∀ (a b : α), SupHom.toFun s.toSupHom (a ⊓ b) = SupHom.toFun s.toSupHom a ⊓ SupHom.toFun s.toSupHom b
A
LatticeHom
preserves infima.
The type of lattice homomorphisms from α
to β
.
Instances For
- toFun : α → β
- map_sup' : ∀ (a b : α), SupHom.toFun s.toSupHom (a ⊔ b) = SupHom.toFun s.toSupHom a ⊔ SupHom.toFun s.toSupHom b
- map_inf' : ∀ (a b : α), SupHom.toFun s.toSupHom (a ⊓ b) = SupHom.toFun s.toSupHom a ⊓ SupHom.toFun s.toSupHom b
- map_top' : SupHom.toFun s.toSupHom ⊤ = ⊤
A
BoundedLatticeHom
preserves the top element. - map_bot' : SupHom.toFun s.toSupHom ⊥ = ⊥
A
BoundedLatticeHom
preserves the bottom element.
The type of bounded lattice homomorphisms from α
to β
.
Instances For
- coe : F → α → β
- coe_injective' : Function.Injective FunLike.coe
A
SupHomClass
morphism preserves suprema.
SupHomClass F α β
states that F
is a type of ⊔
-preserving morphisms.
You should extend this class when you extend SupHom
.
Instances
- coe : F → α → β
- coe_injective' : Function.Injective FunLike.coe
An
InfHomClass
morphism preserves infima.
InfHomClass F α β
states that F
is a type of ⊓
-preserving morphisms.
You should extend this class when you extend InfHom
.
Instances
- coe : F → α → β
- coe_injective' : Function.Injective FunLike.coe
A
SupBotHomClass
morphism preserves the bottom element.
SupBotHomClass F α β
states that F
is a type of finitary supremum-preserving morphisms.
You should extend this class when you extend SupBotHom
.
Instances
- coe : F → α → β
- coe_injective' : Function.Injective FunLike.coe
An
InfTopHomClass
morphism preserves the top element.
InfTopHomClass F α β
states that F
is a type of finitary infimum-preserving morphisms.
You should extend this class when you extend SupBotHom
.
Instances
- coe : F → α → β
- coe_injective' : Function.Injective FunLike.coe
A
LatticeHomClass
morphism preserves infima.
LatticeHomClass F α β
states that F
is a type of lattice morphisms.
You should extend this class when you extend LatticeHom
.
Instances
- coe : F → α → β
- coe_injective' : Function.Injective FunLike.coe
A
BoundedLatticeHomClass
morphism preserves the top element.A
BoundedLatticeHomClass
morphism preserves the bottom element.
BoundedLatticeHomClass F α β
states that F
is a type of bounded lattice morphisms.
You should extend this class when you extend BoundedLatticeHom
.
Instances
Equations
- SupHomClass.toOrderHomClass = let src := inst; RelHomClass.mk (_ : ∀ (f : F) (a b : α), a ≤ b → ↑f a ≤ ↑f b)
Equations
- InfHomClass.toOrderHomClass = let src := inst; RelHomClass.mk (_ : ∀ (f : F) (a b : α), a ≤ b → ↑f a ≤ ↑f b)
Equations
- SupBotHomClass.toBotHomClass = let src := inst; BotHomClass.mk (_ : ∀ (f : F), ↑f ⊥ = ⊥)
Equations
- InfTopHomClass.toTopHomClass = let src := inst; TopHomClass.mk (_ : ∀ (f : F), ↑f ⊤ = ⊤)
Equations
- LatticeHomClass.toInfHomClass = let src := inst; InfHomClass.mk (_ : ∀ (f : F) (a b : α), ↑f (a ⊓ b) = ↑f a ⊓ ↑f b)
Equations
- BoundedLatticeHomClass.toSupBotHomClass = let src := inst; SupBotHomClass.mk (_ : ∀ (f : F), ↑f ⊥ = ⊥)
Equations
- BoundedLatticeHomClass.toInfTopHomClass = let src := inst; InfTopHomClass.mk (_ : ∀ (f : F), ↑f ⊤ = ⊤)
Equations
- One or more equations did not get rendered due to their size.
Equations
- OrderIsoClass.toSupHomClass = let src := let_fun this := inferInstance; this; SupHomClass.mk (_ : ∀ (f : F) (a b : α), ↑f (a ⊔ b) = ↑f a ⊔ ↑f b)
Equations
- OrderIsoClass.toInfHomClass = let src := let_fun this := inferInstance; this; InfHomClass.mk (_ : ∀ (f : F) (a b : α), ↑f (a ⊓ b) = ↑f a ⊓ ↑f b)
Equations
- OrderIsoClass.toSupBotHomClass = let src := OrderIsoClass.toSupHomClass; let src_1 := OrderIsoClass.toBotHomClass; SupBotHomClass.mk (_ : ∀ (f : F), ↑f ⊥ = ⊥)
Equations
- OrderIsoClass.toInfTopHomClass = let src := OrderIsoClass.toInfHomClass; let src_1 := OrderIsoClass.toTopHomClass; InfTopHomClass.mk (_ : ∀ (f : F), ↑f ⊤ = ⊤)
Equations
- OrderIsoClass.toLatticeHomClass = let src := OrderIsoClass.toSupHomClass; let src_1 := OrderIsoClass.toInfHomClass; LatticeHomClass.mk (_ : ∀ (f : F) (a b : α), ↑f (a ⊓ b) = ↑f a ⊓ ↑f b)
Equations
- One or more equations did not get rendered due to their size.
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
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Supremum homomorphisms #
Equations
- SupHom.instSupHomClassSupHom = SupHomClass.mk (_ : ∀ (self : SupHom α β) (a b : α), SupHom.toFun self (a ⊔ b) = SupHom.toFun self a ⊔ SupHom.toFun self b)
Copy of a SupHom
with a new toFun
equal to the old one. Useful to fix definitional
equalities.
Equations
- SupHom.copy f f' h = { toFun := f', map_sup' := (_ : ∀ (a b : α), f' (a ⊔ b) = f' a ⊔ f' b) }
Instances For
Equations
- SupHom.instInhabitedSupHom α = { default := SupHom.id α }
Equations
- One or more equations did not get rendered due to their size.
Equations
- SupHom.instSemilatticeSupSupHomToSup = Function.Injective.semilatticeSup (fun f => ↑f) (_ : Function.Injective fun f => ↑f) (_ : ∀ (x x_1 : SupHom α β), ↑(x ⊔ x_1) = ↑(x ⊔ x_1))
Equations
- SupHom.instBotSupHomToSup = { bot := SupHom.const α ⊥ }
Equations
- SupHom.instTopSupHomToSup = { top := SupHom.const α ⊤ }
Equations
- One or more equations did not get rendered due to their size.
Infimum homomorphisms #
Equations
- InfHom.instInfHomClassInfHom = InfHomClass.mk (_ : ∀ (self : InfHom α β) (a b : α), InfHom.toFun self (a ⊓ b) = InfHom.toFun self a ⊓ InfHom.toFun self b)
Copy of an InfHom
with a new toFun
equal to the old one. Useful to fix definitional
equalities.
Equations
- InfHom.copy f f' h = { toFun := f', map_inf' := (_ : ∀ (a b : α), f' (a ⊓ b) = f' a ⊓ f' b) }
Instances For
Equations
- InfHom.instInhabitedInfHom α = { default := InfHom.id α }
Equations
- One or more equations did not get rendered due to their size.
Equations
- InfHom.instSemilatticeInfInfHomToInf = Function.Injective.semilatticeInf (fun f => ↑f) (_ : Function.Injective fun f => ↑f) (_ : ∀ (x x_1 : InfHom α β), ↑(x ⊓ x_1) = ↑(x ⊓ x_1))
Equations
- InfHom.instBotInfHomToInf = { bot := InfHom.const α ⊥ }
Equations
- InfHom.instTopInfHomToInf = { top := InfHom.const α ⊤ }
Equations
- One or more equations did not get rendered due to their size.
Finitary supremum homomorphisms #
Equations
- SupBotHom.instSupBotHomClassSupBotHom = SupBotHomClass.mk (_ : ∀ (f : SupBotHom α β), SupHom.toFun f.toSupHom ⊥ = ⊥)
Copy of a SupBotHom
with a new toFun
equal to the old one. Useful to fix definitional
equalities.
Equations
- SupBotHom.copy f f' h = let src := BotHom.copy (SupBotHom.toBotHom f) f' h; { toSupHom := SupHom.copy f.toSupHom f' h, map_bot' := (_ : BotHom.toFun src ⊥ = ⊥) }
Instances For
Equations
- SupBotHom.id α = { toSupHom := SupHom.id α, map_bot' := (_ : SupHom.toFun (SupHom.id α) ⊥ = SupHom.toFun (SupHom.id α) ⊥) }
Instances For
Equations
- SupBotHom.instInhabitedSupBotHom α = { default := SupBotHom.id α }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Finitary infimum homomorphisms #
Equations
- InfTopHom.instInfTopHomClassInfTopHom = InfTopHomClass.mk (_ : ∀ (f : InfTopHom α β), InfHom.toFun f.toInfHom ⊤ = ⊤)
Copy of an InfTopHom
with a new toFun
equal to the old one. Useful to fix definitional
equalities.
Equations
- InfTopHom.copy f f' h = let src := TopHom.copy (InfTopHom.toTopHom f) f' h; { toInfHom := InfHom.copy f.toInfHom f' h, map_top' := (_ : TopHom.toFun src ⊤ = ⊤) }
Instances For
Equations
- InfTopHom.id α = { toInfHom := InfHom.id α, map_top' := (_ : InfHom.toFun (InfHom.id α) ⊤ = InfHom.toFun (InfHom.id α) ⊤) }
Instances For
Equations
- InfTopHom.instInhabitedInfTopHom α = { default := InfTopHom.id α }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Lattice homomorphisms #
Reinterpret a LatticeHom
as an InfHom
.
Equations
- LatticeHom.toInfHom f = { toFun := f.toFun, map_inf' := (_ : ∀ (a b : α), SupHom.toFun f.toSupHom (a ⊓ b) = SupHom.toFun f.toSupHom a ⊓ SupHom.toFun f.toSupHom b) }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- LatticeHom.instFunLikeLatticeHom = SupHomClass.toFunLike
Copy of a LatticeHom
with a new toFun
equal to the old one. Useful to fix definitional
equalities.
Equations
- One or more equations did not get rendered due to their size.
Instances For
id
as a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LatticeHom.instInhabitedLatticeHom α = { default := LatticeHom.id α }
Composition of LatticeHom
s as a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An order homomorphism from a linear order is a lattice homomorphism.
Equations
- OrderHomClass.toLatticeHomClass α β = let src := inst; LatticeHomClass.mk (_ : ∀ (f : F) (a b : α), ↑f (a ⊓ b) = ↑f a ⊓ ↑f b)
Reinterpret an order homomorphism to a linear order as a LatticeHom
.
Equations
Instances For
Bounded lattice homomorphisms #
Reinterpret a BoundedLatticeHom
as a SupBotHom
.
Equations
- BoundedLatticeHom.toSupBotHom f = { toSupHom := f.toSupHom, map_bot' := (_ : SupHom.toFun f.toSupHom ⊥ = ⊥) }
Instances For
Reinterpret a BoundedLatticeHom
as an InfTopHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reinterpret a BoundedLatticeHom
as a BoundedOrderHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Copy of a BoundedLatticeHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- One or more equations did not get rendered due to their size.
Instances For
id
as a BoundedLatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- BoundedLatticeHom.instInhabitedBoundedLatticeHom α = { default := BoundedLatticeHom.id α }
Composition of BoundedLatticeHom
s as a BoundedLatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dual homs #
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
Adjoins a ⊤
to the domain and codomain of a SupHom
.
Equations
- SupHom.withTop f = { toFun := WithTop.map ↑f, map_sup' := (_ : ∀ (a b : WithTop α), WithTop.map (↑f) (a ⊔ b) = WithTop.map (↑f) a ⊔ WithTop.map (↑f) b) }
Instances For
Adjoins a ⊥
to the domain and codomain of a SupHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊤
to the codomain of a SupHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊥
to the domain of a SupHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊤
to the domain and codomain of an InfHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊥
to the domain and codomain of an InfHom
.
Equations
- InfHom.withBot f = { toFun := Option.map ↑f, map_inf' := (_ : ∀ (a b : WithBot α), Option.map (↑f) (a ⊓ b) = Option.map (↑f) a ⊓ Option.map (↑f) b) }
Instances For
Adjoins a ⊤
to the codomain of an InfHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊥
to the codomain of an InfHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊤
to the domain and codomain of a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊥
to the domain and codomain of a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊤
and ⊥
to the domain and codomain of a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊥
to the codomain of a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊥
to the domain and codomain of a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjoins a ⊤
and ⊥
to the codomain of a LatticeHom
.
Equations
- One or more equations did not get rendered due to their size.