Heyting algebra morphisms #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
A Heyting homomorphism between two Heyting algebras is a bounded lattice homomorphism that preserves Heyting implication.
We use the fun_like
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 #
heyting_hom
: Heyting homomorphisms.coheyting_hom
: Co-Heyting homomorphisms.biheyting_hom
: Bi-Heyting homomorphisms.
Typeclasses #
- to_lattice_hom : lattice_hom α β
- map_bot' : self.to_lattice_hom.to_sup_hom.to_fun ⊥ = ⊥
- map_himp' : ∀ (a b : α), self.to_lattice_hom.to_sup_hom.to_fun (a ⇨ b) = self.to_lattice_hom.to_sup_hom.to_fun a ⇨ self.to_lattice_hom.to_sup_hom.to_fun b
The type of Heyting homomorphisms from α
to β
. Bounded lattice homomorphisms that preserve
Heyting implication.
Instances for heyting_hom
- to_lattice_hom : lattice_hom α β
- map_top' : self.to_lattice_hom.to_sup_hom.to_fun ⊤ = ⊤
- map_sdiff' : ∀ (a b : α), self.to_lattice_hom.to_sup_hom.to_fun (a \ b) = self.to_lattice_hom.to_sup_hom.to_fun a \ self.to_lattice_hom.to_sup_hom.to_fun b
The type of co-Heyting homomorphisms from α
to β
. Bounded lattice homomorphisms that
preserve difference.
Instances for coheyting_hom
- coheyting_hom.has_sizeof_inst
- coheyting_hom.has_coe_t
- coheyting_hom.coheyting_hom_class
- coheyting_hom.has_coe_to_fun
- coheyting_hom.inhabited
- coheyting_hom.partial_order
- to_lattice_hom : lattice_hom α β
- map_himp' : ∀ (a b : α), self.to_lattice_hom.to_sup_hom.to_fun (a ⇨ b) = self.to_lattice_hom.to_sup_hom.to_fun a ⇨ self.to_lattice_hom.to_sup_hom.to_fun b
- map_sdiff' : ∀ (a b : α), self.to_lattice_hom.to_sup_hom.to_fun (a \ b) = self.to_lattice_hom.to_sup_hom.to_fun a \ self.to_lattice_hom.to_sup_hom.to_fun b
The type of bi-Heyting homomorphisms from α
to β
. Bounded lattice homomorphisms that
preserve Heyting implication and difference.
Instances for biheyting_hom
- biheyting_hom.has_sizeof_inst
- biheyting_hom.has_coe_t
- biheyting_hom.biheyting_hom_class
- biheyting_hom.has_coe_to_fun
- biheyting_hom.inhabited
- biheyting_hom.partial_order
- to_lattice_hom_class : lattice_hom_class F α β
- map_bot : ∀ (f : F), ⇑f ⊥ = ⊥
- map_himp : ∀ (f : F) (a b : α), ⇑f (a ⇨ b) = ⇑f a ⇨ ⇑f b
heyting_hom_class F α β
states that F
is a type of Heyting homomorphisms.
You should extend this class when you extend heyting_hom
.
Instances of this typeclass
Instances of other typeclasses for heyting_hom_class
- heyting_hom_class.has_sizeof_inst
- to_lattice_hom_class : lattice_hom_class F α β
- map_top : ∀ (f : F), ⇑f ⊤ = ⊤
- map_sdiff : ∀ (f : F) (a b : α), ⇑f (a \ b) = ⇑f a \ ⇑f b
coheyting_hom_class F α β
states that F
is a type of co-Heyting homomorphisms.
You should extend this class when you extend coheyting_hom
.
Instances of this typeclass
Instances of other typeclasses for coheyting_hom_class
- coheyting_hom_class.has_sizeof_inst
- to_lattice_hom_class : lattice_hom_class F α β
- map_himp : ∀ (f : F) (a b : α), ⇑f (a ⇨ b) = ⇑f a ⇨ ⇑f b
- map_sdiff : ∀ (f : F) (a b : α), ⇑f (a \ b) = ⇑f a \ ⇑f b
biheyting_hom_class F α β
states that F
is a type of bi-Heyting homomorphisms.
You should extend this class when you extend biheyting_hom
.
Instances of this typeclass
Instances of other typeclasses for biheyting_hom_class
- biheyting_hom_class.has_sizeof_inst
Equations
- heyting_hom_class.to_bounded_lattice_hom_class = {coe := lattice_hom_class.coe heyting_hom_class.to_lattice_hom_class, coe_injective' := _, map_sup := _, map_inf := _, map_top := _, map_bot := _}
Equations
- coheyting_hom_class.to_bounded_lattice_hom_class = {coe := lattice_hom_class.coe coheyting_hom_class.to_lattice_hom_class, coe_injective' := _, map_sup := _, map_inf := _, map_top := _, map_bot := _}
Equations
Equations
Equations
- order_iso_class.to_heyting_hom_class = {to_lattice_hom_class := {coe := bounded_lattice_hom_class.coe order_iso_class.to_bounded_lattice_hom_class, coe_injective' := _, map_sup := _, map_inf := _}, map_bot := _, map_himp := _}
Equations
- order_iso_class.to_coheyting_hom_class = {to_lattice_hom_class := {coe := bounded_lattice_hom_class.coe order_iso_class.to_bounded_lattice_hom_class, coe_injective' := _, map_sup := _, map_inf := _}, map_top := _, map_sdiff := _}
Equations
- order_iso_class.to_biheyting_hom_class = {to_lattice_hom_class := {coe := lattice_hom_class.coe order_iso_class.to_lattice_hom_class, coe_injective' := _, map_sup := _, map_inf := _}, map_himp := _, map_sdiff := _}
This can't be an instance because of typeclass loops.
Equations
- bounded_lattice_hom_class.to_biheyting_hom_class = {to_lattice_hom_class := {coe := bounded_lattice_hom_class.coe _inst_3, coe_injective' := _, map_sup := _, map_inf := _}, map_himp := _, map_sdiff := _}
Equations
- heyting_hom.has_coe_t = {coe := λ (f : F), {to_lattice_hom := {to_sup_hom := {to_fun := ⇑f, map_sup' := _}, map_inf' := _}, map_bot' := _, map_himp' := _}}
Equations
- coheyting_hom.has_coe_t = {coe := λ (f : F), {to_lattice_hom := {to_sup_hom := {to_fun := ⇑f, map_sup' := _}, map_inf' := _}, map_top' := _, map_sdiff' := _}}
Equations
- biheyting_hom.has_coe_t = {coe := λ (f : F), {to_lattice_hom := {to_sup_hom := {to_fun := ⇑f, map_sup' := _}, map_inf' := _}, map_himp' := _, map_sdiff' := _}}
Equations
- heyting_hom.heyting_hom_class = {to_lattice_hom_class := {coe := λ (f : heyting_hom α β), f.to_lattice_hom.to_sup_hom.to_fun, coe_injective' := _, map_sup := _, map_inf := _}, map_bot := _, map_himp := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Copy of a heyting_hom
with a new to_fun
equal to the old one. Useful to fix definitional
equalities.
id
as a heyting_hom
.
Equations
- heyting_hom.id α = {to_lattice_hom := lattice_hom.id α (generalized_heyting_algebra.to_lattice α), map_bot' := _, map_himp' := _}
Equations
- heyting_hom.inhabited = {default := heyting_hom.id α _inst_1}
Equations
- heyting_hom.partial_order = partial_order.lift coe_fn heyting_hom.partial_order._proof_1
Composition of heyting_hom
s as a heyting_hom
.
Equations
- coheyting_hom.coheyting_hom_class = {to_lattice_hom_class := {coe := λ (f : coheyting_hom α β), f.to_lattice_hom.to_sup_hom.to_fun, coe_injective' := _, map_sup := _, map_inf := _}, map_top := _, map_sdiff := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Copy of a coheyting_hom
with a new to_fun
equal to the old one. Useful to fix definitional
equalities.
Equations
- f.copy f' h = {to_lattice_hom := {to_sup_hom := {to_fun := f', map_sup' := _}, map_inf' := _}, map_top' := _, map_sdiff' := _}
id
as a coheyting_hom
.
Equations
- coheyting_hom.id α = {to_lattice_hom := lattice_hom.id α (generalized_coheyting_algebra.to_lattice α), map_top' := _, map_sdiff' := _}
Equations
- coheyting_hom.inhabited = {default := coheyting_hom.id α _inst_1}
Equations
- coheyting_hom.partial_order = partial_order.lift coe_fn coheyting_hom.partial_order._proof_1
Composition of coheyting_hom
s as a coheyting_hom
.
Equations
- f.comp g = {to_lattice_hom := {to_sup_hom := {to_fun := ⇑f ∘ ⇑g, map_sup' := _}, map_inf' := _}, map_top' := _, map_sdiff' := _}
Equations
- biheyting_hom.biheyting_hom_class = {to_lattice_hom_class := {coe := λ (f : biheyting_hom α β), f.to_lattice_hom.to_sup_hom.to_fun, coe_injective' := _, map_sup := _, map_inf := _}, map_himp := _, map_sdiff := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Copy of a biheyting_hom
with a new to_fun
equal to the old one. Useful to fix definitional
equalities.
Equations
- f.copy f' h = {to_lattice_hom := {to_sup_hom := {to_fun := f', map_sup' := _}, map_inf' := _}, map_himp' := _, map_sdiff' := _}
id
as a biheyting_hom
.
Equations
- biheyting_hom.id α = {to_lattice_hom := lattice_hom.id α (generalized_coheyting_algebra.to_lattice α), map_himp' := _, map_sdiff' := _}
Equations
- biheyting_hom.inhabited = {default := biheyting_hom.id α _inst_1}
Equations
- biheyting_hom.partial_order = partial_order.lift coe_fn biheyting_hom.partial_order._proof_1
Composition of biheyting_hom
s as a biheyting_hom
.
Equations
- f.comp g = {to_lattice_hom := {to_sup_hom := {to_fun := ⇑f ∘ ⇑g, map_sup' := _}, map_inf' := _}, map_himp' := _, map_sdiff' := _}