Complete lattice homomorphisms #
This file defines frame homorphisms and complete lattice homomorphisms.
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 #
Sup_hom
: Maps which preserve⨆
.Inf_hom
: Maps which preserve⨅
.frame_hom
: Frame homomorphisms. Maps which preserve⨆
and⊓
.complete_lattice_hom
: Complete lattice homomorphisms. Maps which preserve⨆
and⨅
.
Typeclasses #
- to_Sup_hom : Sup_hom α β
- map_inf' : ∀ (a b : α), self.to_Sup_hom.to_fun (a ⊓ b) = self.to_Sup_hom.to_fun a ⊓ self.to_Sup_hom.to_fun b
The type of frame homomorphisms from α
to β
. They preserve ⊓
and ⨆
.
- to_Sup_hom : Sup_hom α β
- map_Inf' : ∀ (s : set α), self.to_Sup_hom.to_fun (Inf s) = Inf (self.to_Sup_hom.to_fun '' s)
The type of complete lattice homomorphisms from α
to β
.
- to_fun_like : fun_like F α (λ (_x : α), β)
- map_Sup : ∀ (f : F) (s : set α), ⇑f (Sup s) = Sup (⇑f '' s)
Sup_hom_class F α β
states that F
is a type of ⨆
-preserving morphisms.
You should extend this class when you extend Sup_hom
.
- to_fun_like : fun_like F α (λ (_x : α), β)
- map_Inf : ∀ (f : F) (s : set α), ⇑f (Inf s) = Inf (⇑f '' s)
Inf_hom_class F α β
states that F
is a type of ⨅
-preserving morphisms.
You should extend this class when you extend Inf_hom
.
frame_hom_class F α β
states that F
is a type of frame morphisms. They preserve ⊓
and ⨆
.
You should extend this class when you extend frame_hom
.
complete_lattice_hom_class F α β
states that F
is a type of complete lattice morphisms.
You should extend this class when you extend complete_lattice_hom
.
Equations
- Sup_hom_class.to_sup_hom_class = {to_fun_like := Sup_hom_class.to_fun_like _inst_3, map_sup := _}
Equations
- Sup_hom_class.to_bot_hom_class = {to_fun_like := Sup_hom_class.to_fun_like _inst_3, map_bot := _}
Equations
- Inf_hom_class.to_inf_hom_class = {to_fun_like := Inf_hom_class.to_fun_like _inst_3, map_inf := _}
Equations
- Inf_hom_class.to_top_hom_class = {to_fun_like := Inf_hom_class.to_fun_like _inst_3, map_top := _}
Equations
Supremum homomorphisms #
Equations
- Sup_hom.Sup_hom_class = {to_fun_like := {coe := Sup_hom.to_fun _inst_2, coe_injective' := _}, map_Sup := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- Sup_hom.inhabited α = {default := Sup_hom.id α _inst_1}
Equations
- Sup_hom.partial_order = partial_order.lift coe_fn Sup_hom.partial_order._proof_1
Infimum homomorphisms #
Equations
- Inf_hom.Inf_hom_class = {to_fun_like := {coe := Inf_hom.to_fun _inst_2, coe_injective' := _}, map_Inf := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- Inf_hom.inhabited α = {default := Inf_hom.id α _inst_1}
Equations
- Inf_hom.partial_order = partial_order.lift coe_fn Inf_hom.partial_order._proof_1
Frame homomorphisms #
Equations
- frame_hom.frame_hom_class = {to_Sup_hom_class := {to_fun_like := {coe := λ (f : frame_hom α β), f.to_Sup_hom.to_fun, coe_injective' := _}, map_Sup := _}, map_inf := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- frame_hom.has_coe_to_fun = {coe := λ (f : frame_hom α β), f.to_Sup_hom.to_fun}
Reinterpret a frame_hom
as a lattice_hom
.
Equations
- f.to_lattice_hom = {to_sup_hom := {to_fun := ⇑f, map_sup' := _}, map_inf' := _}
Copy of a frame_hom
with a new to_fun
equal to the old one. Useful to fix definitional
equalities.
Equations
- frame_hom.id α = {to_Sup_hom := {to_fun := (Sup_hom.id α).to_fun, map_Sup' := _}, map_inf' := _}
Equations
- frame_hom.inhabited α = {default := frame_hom.id α _inst_1}
Composition of frame_hom
s as a frame_hom
.
Equations
- f.comp g = {to_Sup_hom := {to_fun := (f.to_Sup_hom.comp g.to_Sup_hom).to_fun, map_Sup' := _}, map_inf' := _}
Equations
- frame_hom.partial_order = partial_order.lift coe_fn frame_hom.partial_order._proof_1
Equations
- frame_hom.has_bot = {bot := {to_Sup_hom := {to_fun := (inf_hom.const α ⊥).to_fun, map_Sup' := _}, map_inf' := _}}
Complete lattice homomorphisms #
Reinterpret a complete_lattice_hom
as an Inf_hom
.
Equations
- f.to_Inf_hom = {to_fun := f.to_Sup_hom.to_fun, map_Inf' := _}
Equations
- complete_lattice_hom.complete_lattice_hom_class = {to_Sup_hom_class := {to_fun_like := {coe := λ (f : complete_lattice_hom α β), f.to_Sup_hom.to_fun, coe_injective' := _}, map_Sup := _}, map_Inf := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
- complete_lattice_hom.has_coe_to_fun = {coe := λ (f : complete_lattice_hom α β), f.to_Sup_hom.to_fun}
Copy of a complete_lattice_hom
with a new to_fun
equal to the old one. Useful to fix
definitional equalities.
id
as a complete_lattice_hom
.
Equations
- complete_lattice_hom.id α = {to_Sup_hom := {to_fun := id α, map_Sup' := _}, map_Inf' := _}
Equations
- complete_lattice_hom.inhabited α = {default := complete_lattice_hom.id α _inst_1}
Composition of complete_lattice_hom
s as a complete_lattice_hom
.
Equations
- f.comp g = {to_Sup_hom := {to_fun := (f.to_Sup_hom.comp g.to_Sup_hom).to_fun, map_Sup' := _}, map_Inf' := _}