Bounded order homomorphisms #
This file defines (bounded) order 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 #
top_hom
: Maps which preserve⊤
.bot_hom
: Maps which preserve⊥
.bounded_order_hom
: Bounded order homomorphisms. Monotone maps which preserve⊤
and⊥
.
Typeclasses #
- to_order_hom : α →o β
- map_top' : self.to_order_hom.to_fun ⊤ = ⊤
- map_bot' : self.to_order_hom.to_fun ⊥ = ⊥
The type of bounded order homomorphisms from α
to β
.
top_hom_class F α β
states that F
is a type of ⊤
-preserving morphisms.
You should extend this class when you extend top_hom
.
bot_hom_class F α β
states that F
is a type of ⊥
-preserving morphisms.
You should extend this class when you extend bot_hom
.
- to_rel_hom_class : rel_hom_class F has_le.le has_le.le
- map_top : ∀ (f : F), ⇑f ⊤ = ⊤
- map_bot : ∀ (f : F), ⇑f ⊥ = ⊥
bounded_order_hom_class F α β
states that F
is a type of bounded order morphisms.
You should extend this class when you extend bounded_order_hom
.
Equations
- order_iso_class.to_bounded_order_hom_class = {to_rel_hom_class := order_iso_class.to_order_hom_class _inst_5, map_top := _, map_bot := _}
Top homomorphisms #
Equations
- top_hom.top_hom_class = {to_fun_like := {coe := top_hom.to_fun _inst_2, coe_injective' := _}, map_top := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
Equations
Equations
- top_hom.partial_order = partial_order.lift coe_fn top_hom.partial_order._proof_1
Equations
- top_hom.semilattice_inf = function.injective.semilattice_inf coe_fn top_hom.semilattice_inf._proof_1 top_hom.semilattice_inf._proof_2
Equations
- top_hom.semilattice_sup = function.injective.semilattice_sup coe_fn top_hom.semilattice_sup._proof_1 top_hom.semilattice_sup._proof_2
Equations
- top_hom.lattice = function.injective.lattice coe_fn top_hom.lattice._proof_1 top_hom.lattice._proof_2 top_hom.lattice._proof_3
Equations
- top_hom.distrib_lattice = function.injective.distrib_lattice coe_fn top_hom.distrib_lattice._proof_1 top_hom.distrib_lattice._proof_2 top_hom.distrib_lattice._proof_3
Bot homomorphisms #
Equations
- bot_hom.bot_hom_class = {to_fun_like := {coe := bot_hom.to_fun _inst_2, coe_injective' := _}, map_bot := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Equations
Equations
Equations
- bot_hom.partial_order = partial_order.lift coe_fn bot_hom.partial_order._proof_1
Equations
- bot_hom.semilattice_inf = function.injective.semilattice_inf coe_fn bot_hom.semilattice_inf._proof_1 bot_hom.semilattice_inf._proof_2
Equations
- bot_hom.semilattice_sup = function.injective.semilattice_sup coe_fn bot_hom.semilattice_sup._proof_1 bot_hom.semilattice_sup._proof_2
Equations
- bot_hom.lattice = function.injective.lattice coe_fn bot_hom.lattice._proof_1 bot_hom.lattice._proof_2 bot_hom.lattice._proof_3
Equations
- bot_hom.distrib_lattice = function.injective.distrib_lattice coe_fn bot_hom.distrib_lattice._proof_1 bot_hom.distrib_lattice._proof_2 bot_hom.distrib_lattice._proof_3
Bounded order homomorphisms #
Reinterpret a bounded_order_hom
as a top_hom
.
Equations
- f.to_top_hom = {to_fun := f.to_order_hom.to_fun, map_top' := _}
Reinterpret a bounded_order_hom
as a bot_hom
.
Equations
- f.to_bot_hom = {to_fun := f.to_order_hom.to_fun, map_bot' := _}
Equations
- bounded_order_hom.bounded_order_hom_class = {to_rel_hom_class := {to_fun_like := {coe := λ (f : bounded_order_hom α β), f.to_order_hom.to_fun, coe_injective' := _}, map_rel := _}, map_top := _, map_bot := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Copy of a bounded_order_hom
with a new to_fun
equal to the old one. Useful to fix
definitional equalities.
id
as a bounded_order_hom
.
Equations
- bounded_order_hom.id α = {to_order_hom := {to_fun := order_hom.id.to_fun, monotone' := _}, map_top' := _, map_bot' := _}
Equations
- bounded_order_hom.inhabited α = {default := bounded_order_hom.id α _inst_5}
Composition of bounded_order_hom
s as a bounded_order_hom
.
Equations
- f.comp g = {to_order_hom := {to_fun := (f.to_order_hom.comp g.to_order_hom).to_fun, monotone' := _}, map_top' := _, map_bot' := _}
Dual homs #
Reinterpret a top homomorphism as a bot homomorphism between the dual lattices.
Reinterpret a bot homomorphism as a top homomorphism between the dual lattices.
Reinterpret a bounded order homomorphism as a bounded order homomorphism between the dual orders.
Equations
- bounded_order_hom.dual = {to_fun := λ (f : bounded_order_hom α β), {to_order_hom := ⇑order_hom.dual f.to_order_hom, map_top' := _, map_bot' := _}, inv_fun := λ (f : bounded_order_hom (order_dual α) (order_dual β)), {to_order_hom := ⇑(order_hom.dual.symm) f.to_order_hom, map_top' := _, map_bot' := _}, left_inv := _, right_inv := _}