mathlib documentation

order.hom.lattice

Lattice homomorphisms #

This file defines (bounded) 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 #

Typeclasses #

TODO #

Do we need more intersections between bot_hom, top_hom and lattice homomorphisms?

structure sup_hom (α : Type u_6) (β : Type u_7) [has_sup α] [has_sup β] :
Type (max u_6 u_7)

The type of -preserving functions from α to β.

structure inf_hom (α : Type u_6) (β : Type u_7) [has_inf α] [has_inf β] :
Type (max u_6 u_7)

The type of -preserving functions from α to β.

structure lattice_hom (α : Type u_6) (β : Type u_7) [lattice α] [lattice β] :
Type (max u_6 u_7)

The type of lattice homomorphisms from α to β.

structure bounded_lattice_hom (α : Type u_6) (β : Type u_7) [lattice α] [lattice β] [bounded_order α] [bounded_order β] :
Type (max u_6 u_7)

The type of bounded lattice homomorphisms from α to β.

@[class]
structure sup_hom_class (F : Type u_6) (α : out_param (Type u_7)) (β : out_param (Type u_8)) [has_sup α] [has_sup β] :
Type (max u_6 u_7 u_8)

sup_hom_class F α β states that F is a type of -preserving morphisms.

You should extend this class when you extend sup_hom.

Instances
@[class]
structure inf_hom_class (F : Type u_6) (α : out_param (Type u_7)) (β : out_param (Type u_8)) [has_inf α] [has_inf β] :
Type (max u_6 u_7 u_8)

inf_hom_class F α β states that F is a type of -preserving morphisms.

You should extend this class when you extend inf_hom.

Instances
@[class]
structure lattice_hom_class (F : Type u_6) (α : out_param (Type u_7)) (β : out_param (Type u_8)) [lattice α] [lattice β] :
Type (max u_6 u_7 u_8)

lattice_hom_class F α β states that F is a type of lattice morphisms.

You should extend this class when you extend sup_hom.

Instances
@[class]
structure bounded_lattice_hom_class (F : Type u_6) (α : out_param (Type u_7)) (β : out_param (Type u_8)) [lattice α] [lattice β] [bounded_order α] [bounded_order β] :
Type (max u_6 u_7 u_8)

bounded_lattice_hom_class F α β states that F is a type of bounded lattice morphisms.

You should extend this class when you extend bounded_lattice_hom.

Instances
@[protected, instance]
def sup_hom_class.to_order_hom_class {F : Type u_1} {α : Type u_2} {β : Type u_3} [semilattice_sup α] [semilattice_sup β] [sup_hom_class F α β] :
Equations
@[protected, instance]
def inf_hom_class.to_order_hom_class {F : Type u_1} {α : Type u_2} {β : Type u_3} [semilattice_inf α] [semilattice_inf β] [inf_hom_class F α β] :
Equations
@[protected, instance]
def lattice_hom_class.to_inf_hom_class {F : Type u_1} {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [lattice_hom_class F α β] :
Equations
@[protected, instance]
def sup_hom.has_coe_t {F : Type u_1} {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] [sup_hom_class F α β] :
has_coe_t F (sup_hom α β)
Equations
@[protected, instance]
def inf_hom.has_coe_t {F : Type u_1} {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] [inf_hom_class F α β] :
has_coe_t F (inf_hom α β)
Equations
@[protected, instance]
def lattice_hom.has_coe_t {F : Type u_1} {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [lattice_hom_class F α β] :
Equations
@[protected, instance]
def bounded_lattice_hom.has_coe_t {F : Type u_1} {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] [bounded_lattice_hom_class F α β] :
Equations

Supremum homomorphisms #

@[protected, instance]
def sup_hom.sup_hom_class {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] :
sup_hom_class (sup_hom α β) α β
Equations
@[protected, instance]
def sup_hom.has_coe_to_fun {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] :
has_coe_to_fun (sup_hom α β) (λ (_x : sup_hom α β), α → β)

Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun directly.

Equations
@[simp]
theorem sup_hom.to_fun_eq_coe {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] {f : sup_hom α β} :
@[ext]
theorem sup_hom.ext {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] {f g : sup_hom α β} (h : ∀ (a : α), f a = g a) :
f = g
@[protected]
def sup_hom.copy {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] (f : sup_hom α β) (f' : α → β) (h : f' = f) :
sup_hom α β

Copy of a sup_hom with a new to_fun equal to the old one. Useful to fix definitional equalities.

Equations
@[protected]
def sup_hom.id (α : Type u_2) [has_sup α] :
sup_hom α α

id as a sup_hom.

Equations
@[protected, instance]
def sup_hom.inhabited (α : Type u_2) [has_sup α] :
Equations
@[simp]
theorem sup_hom.coe_id (α : Type u_2) [has_sup α] :
@[simp]
theorem sup_hom.id_apply {α : Type u_2} [has_sup α] (a : α) :
(sup_hom.id α) a = a
def sup_hom.comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_sup α] [has_sup β] [has_sup γ] (f : sup_hom β γ) (g : sup_hom α β) :
sup_hom α γ

Composition of sup_homs as a sup_hom.

Equations
@[simp]
theorem sup_hom.coe_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_sup α] [has_sup β] [has_sup γ] (f : sup_hom β γ) (g : sup_hom α β) :
(f.comp g) = f g
@[simp]
theorem sup_hom.comp_apply {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_sup α] [has_sup β] [has_sup γ] (f : sup_hom β γ) (g : sup_hom α β) (a : α) :
(f.comp g) a = f (g a)
@[simp]
theorem sup_hom.comp_assoc {α : Type u_2} {β : Type u_3} {γ : Type u_4} {δ : Type u_5} [has_sup α] [has_sup β] [has_sup γ] [has_sup δ] (f : sup_hom γ δ) (g : sup_hom β γ) (h : sup_hom α β) :
(f.comp g).comp h = f.comp (g.comp h)
@[simp]
theorem sup_hom.comp_id {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] (f : sup_hom α β) :
f.comp (sup_hom.id α) = f
@[simp]
theorem sup_hom.id_comp {α : Type u_2} {β : Type u_3} [has_sup α] [has_sup β] (f : sup_hom α β) :
(sup_hom.id β).comp f = f
theorem sup_hom.cancel_right {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_sup α] [has_sup β] [has_sup γ] {g₁ g₂ : sup_hom β γ} {f : sup_hom α β} (hf : function.surjective f) :
g₁.comp f = g₂.comp f g₁ = g₂
theorem sup_hom.cancel_left {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_sup α] [has_sup β] [has_sup γ] {g : sup_hom β γ} {f₁ f₂ : sup_hom α β} (hg : function.injective g) :
g.comp f₁ = g.comp f₂ f₁ = f₂
@[protected, instance]
def sup_hom.has_sup {α : Type u_2} {β : Type u_3} [has_sup α] [semilattice_sup β] :
Equations
@[protected, instance]
def sup_hom.semilattice_sup {α : Type u_2} {β : Type u_3} [has_sup α] [semilattice_sup β] :
Equations
@[simp]
theorem sup_hom.coe_sup {α : Type u_2} {β : Type u_3} [has_sup α] [semilattice_sup β] (f g : sup_hom α β) :
(f g) = f g
@[simp]
theorem sup_hom.sup_apply {α : Type u_2} {β : Type u_3} [has_sup α] [semilattice_sup β] (f g : sup_hom α β) (a : α) :
(f g) a = f a g a
def sup_hom.const (α : Type u_2) {β : Type u_3} [has_sup α] [semilattice_sup β] (b : β) :
sup_hom α β

The constant function as a sup_hom.

Equations
@[simp]
theorem sup_hom.coe_const (α : Type u_2) {β : Type u_3} [has_sup α] [semilattice_sup β] (b : β) :
@[simp]
theorem sup_hom.const_apply (α : Type u_2) {β : Type u_3} [has_sup α] [semilattice_sup β] (b : β) (a : α) :
(sup_hom.const α b) a = b

Infimum homomorphisms #

@[protected, instance]
def inf_hom.inf_hom_class {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] :
inf_hom_class (inf_hom α β) α β
Equations
@[protected, instance]
def inf_hom.has_coe_to_fun {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] :
has_coe_to_fun (inf_hom α β) (λ (_x : inf_hom α β), α → β)

Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun directly.

Equations
@[simp]
theorem inf_hom.to_fun_eq_coe {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] {f : inf_hom α β} :
@[ext]
theorem inf_hom.ext {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] {f g : inf_hom α β} (h : ∀ (a : α), f a = g a) :
f = g
@[protected]
def inf_hom.copy {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] (f : inf_hom α β) (f' : α → β) (h : f' = f) :
inf_hom α β

Copy of a inf_hom with a new to_fun equal to the old one. Useful to fix definitional equalities.

Equations
@[protected]
def inf_hom.id (α : Type u_2) [has_inf α] :
inf_hom α α

id as an inf_hom.

Equations
@[protected, instance]
def inf_hom.inhabited (α : Type u_2) [has_inf α] :
Equations
@[simp]
theorem inf_hom.coe_id (α : Type u_2) [has_inf α] :
@[simp]
theorem inf_hom.id_apply {α : Type u_2} [has_inf α] (a : α) :
(inf_hom.id α) a = a
def inf_hom.comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_inf α] [has_inf β] [has_inf γ] (f : inf_hom β γ) (g : inf_hom α β) :
inf_hom α γ

Composition of inf_homs as a inf_hom.

Equations
@[simp]
theorem inf_hom.coe_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_inf α] [has_inf β] [has_inf γ] (f : inf_hom β γ) (g : inf_hom α β) :
(f.comp g) = f g
@[simp]
theorem inf_hom.comp_apply {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_inf α] [has_inf β] [has_inf γ] (f : inf_hom β γ) (g : inf_hom α β) (a : α) :
(f.comp g) a = f (g a)
@[simp]
theorem inf_hom.comp_assoc {α : Type u_2} {β : Type u_3} {γ : Type u_4} {δ : Type u_5} [has_inf α] [has_inf β] [has_inf γ] [has_inf δ] (f : inf_hom γ δ) (g : inf_hom β γ) (h : inf_hom α β) :
(f.comp g).comp h = f.comp (g.comp h)
@[simp]
theorem inf_hom.comp_id {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] (f : inf_hom α β) :
f.comp (inf_hom.id α) = f
@[simp]
theorem inf_hom.id_comp {α : Type u_2} {β : Type u_3} [has_inf α] [has_inf β] (f : inf_hom α β) :
(inf_hom.id β).comp f = f
theorem inf_hom.cancel_right {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_inf α] [has_inf β] [has_inf γ] {g₁ g₂ : inf_hom β γ} {f : inf_hom α β} (hf : function.surjective f) :
g₁.comp f = g₂.comp f g₁ = g₂
theorem inf_hom.cancel_left {α : Type u_2} {β : Type u_3} {γ : Type u_4} [has_inf α] [has_inf β] [has_inf γ] {g : inf_hom β γ} {f₁ f₂ : inf_hom α β} (hg : function.injective g) :
g.comp f₁ = g.comp f₂ f₁ = f₂
@[protected, instance]
def inf_hom.has_inf {α : Type u_2} {β : Type u_3} [has_inf α] [semilattice_inf β] :
Equations
@[protected, instance]
def inf_hom.semilattice_inf {α : Type u_2} {β : Type u_3} [has_inf α] [semilattice_inf β] :
Equations
@[simp]
theorem inf_hom.coe_inf {α : Type u_2} {β : Type u_3} [has_inf α] [semilattice_inf β] (f g : inf_hom α β) :
(f g) = f g
@[simp]
theorem inf_hom.inf_apply {α : Type u_2} {β : Type u_3} [has_inf α] [semilattice_inf β] (f g : inf_hom α β) (a : α) :
(f g) a = f a g a
def inf_hom.const (α : Type u_2) {β : Type u_3} [has_inf α] [semilattice_inf β] (b : β) :
inf_hom α β

The constant function as an inf_hom.

Equations
@[simp]
theorem inf_hom.coe_const (α : Type u_2) {β : Type u_3} [has_inf α] [semilattice_inf β] (b : β) :
@[simp]
theorem inf_hom.const_apply (α : Type u_2) {β : Type u_3} [has_inf α] [semilattice_inf β] (b : β) (a : α) :
(inf_hom.const α b) a = b

Lattice homomorphisms #

def lattice_hom.to_inf_hom {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] (f : lattice_hom α β) :
inf_hom α β

Reinterpret a lattice_hom as an inf_hom.

Equations
@[protected, instance]
def lattice_hom.lattice_hom_class {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] :
Equations
@[protected, instance]
def lattice_hom.has_coe_to_fun {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] :
has_coe_to_fun (lattice_hom α β) (λ (_x : lattice_hom α β), α → β)

Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun directly.

Equations
@[simp]
theorem lattice_hom.to_fun_eq_coe {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] {f : lattice_hom α β} :
@[ext]
theorem lattice_hom.ext {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] {f g : lattice_hom α β} (h : ∀ (a : α), f a = g a) :
f = g
@[protected]
def lattice_hom.copy {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] (f : lattice_hom α β) (f' : α → β) (h : f' = f) :

Copy of a lattice_hom with a new to_fun equal to the old one. Useful to fix definitional equalities.

Equations
@[protected]
def lattice_hom.id (α : Type u_2) [lattice α] :

id as a lattice_hom.

Equations
@[protected, instance]
def lattice_hom.inhabited (α : Type u_2) [lattice α] :
Equations
@[simp]
theorem lattice_hom.coe_id (α : Type u_2) [lattice α] :
@[simp]
theorem lattice_hom.id_apply {α : Type u_2} [lattice α] (a : α) :
def lattice_hom.comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] (f : lattice_hom β γ) (g : lattice_hom α β) :

Composition of lattice_homs as a lattice_hom.

Equations
@[simp]
theorem lattice_hom.coe_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] (f : lattice_hom β γ) (g : lattice_hom α β) :
(f.comp g) = f g
@[simp]
theorem lattice_hom.comp_apply {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] (f : lattice_hom β γ) (g : lattice_hom α β) (a : α) :
(f.comp g) a = f (g a)
@[simp]
theorem lattice_hom.coe_comp_sup_hom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] (f : lattice_hom β γ) (g : lattice_hom α β) :
(f.comp g) = f.comp g
@[simp]
theorem lattice_hom.coe_comp_inf_hom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] (f : lattice_hom β γ) (g : lattice_hom α β) :
(f.comp g) = f.comp g
@[simp]
theorem lattice_hom.comp_assoc {α : Type u_2} {β : Type u_3} {γ : Type u_4} {δ : Type u_5} [lattice α] [lattice β] [lattice γ] [lattice δ] (f : lattice_hom γ δ) (g : lattice_hom β γ) (h : lattice_hom α β) :
(f.comp g).comp h = f.comp (g.comp h)
@[simp]
theorem lattice_hom.comp_id {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] (f : lattice_hom α β) :
@[simp]
theorem lattice_hom.id_comp {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] (f : lattice_hom α β) :
theorem lattice_hom.cancel_right {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] {g₁ g₂ : lattice_hom β γ} {f : lattice_hom α β} (hf : function.surjective f) :
g₁.comp f = g₂.comp f g₁ = g₂
theorem lattice_hom.cancel_left {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] {g : lattice_hom β γ} {f₁ f₂ : lattice_hom α β} (hg : function.injective g) :
g.comp f₁ = g.comp f₂ f₁ = f₂
def order_hom_class.to_lattice_hom_class {F : Type u_1} (α : Type u_2) (β : Type u_3) [linear_order α] [lattice β] [order_hom_class F α β] :

An order homomorphism from a linear order is a lattice homomorphism.

Equations
def order_hom_class.to_lattice_hom {F : Type u_1} (α : Type u_2) (β : Type u_3) [linear_order α] [lattice β] [order_hom_class F α β] (f : F) :

Reinterpret an order homomorphism to a linear order as a lattice_hom.

Equations
@[simp]
theorem order_hom_class.coe_to_lattice_hom {F : Type u_1} (α : Type u_2) (β : Type u_3) [linear_order α] [lattice β] [order_hom_class F α β] (f : F) :
@[simp]
theorem order_hom_class.to_lattice_hom_apply {F : Type u_1} (α : Type u_2) (β : Type u_3) [linear_order α] [lattice β] [order_hom_class F α β] (f : F) (a : α) :

Bounded lattice homomorphisms #

@[protected, instance]
def bounded_lattice_hom.has_coe_to_fun {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] :
has_coe_to_fun (bounded_lattice_hom α β) (λ (_x : bounded_lattice_hom α β), α → β)

Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun directly.

Equations
@[simp]
theorem bounded_lattice_hom.to_fun_eq_coe {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] {f : bounded_lattice_hom α β} :
@[ext]
theorem bounded_lattice_hom.ext {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] {f g : bounded_lattice_hom α β} (h : ∀ (a : α), f a = g a) :
f = g
@[protected]
def bounded_lattice_hom.copy {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] (f : bounded_lattice_hom α β) (f' : α → β) (h : f' = f) :

Copy of a bounded_lattice_hom with a new to_fun equal to the old one. Useful to fix definitional equalities.

Equations
@[protected, instance]
Equations
@[simp]
@[simp]
theorem bounded_lattice_hom.id_apply {α : Type u_2} [lattice α] [bounded_order α] (a : α) :
def bounded_lattice_hom.comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] (f : bounded_lattice_hom β γ) (g : bounded_lattice_hom α β) :

Composition of bounded_lattice_homs as a bounded_lattice_hom.

Equations
@[simp]
theorem bounded_lattice_hom.coe_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] (f : bounded_lattice_hom β γ) (g : bounded_lattice_hom α β) :
(f.comp g) = f g
@[simp]
theorem bounded_lattice_hom.comp_apply {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] (f : bounded_lattice_hom β γ) (g : bounded_lattice_hom α β) (a : α) :
(f.comp g) a = f (g a)
@[simp]
theorem bounded_lattice_hom.coe_comp_lattice_hom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] (f : bounded_lattice_hom β γ) (g : bounded_lattice_hom α β) :
(f.comp g) = f.comp g
@[simp]
theorem bounded_lattice_hom.coe_comp_sup_hom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] (f : bounded_lattice_hom β γ) (g : bounded_lattice_hom α β) :
(f.comp g) = f.comp g
@[simp]
theorem bounded_lattice_hom.coe_comp_inf_hom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] (f : bounded_lattice_hom β γ) (g : bounded_lattice_hom α β) :
(f.comp g) = f.comp g
@[simp]
theorem bounded_lattice_hom.comp_assoc {α : Type u_2} {β : Type u_3} {γ : Type u_4} {δ : Type u_5} [lattice α] [lattice β] [lattice γ] [lattice δ] [bounded_order α] [bounded_order β] [bounded_order γ] [bounded_order δ] (f : bounded_lattice_hom γ δ) (g : bounded_lattice_hom β γ) (h : bounded_lattice_hom α β) :
(f.comp g).comp h = f.comp (g.comp h)
@[simp]
theorem bounded_lattice_hom.comp_id {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] (f : bounded_lattice_hom α β) :
@[simp]
theorem bounded_lattice_hom.id_comp {α : Type u_2} {β : Type u_3} [lattice α] [lattice β] [bounded_order α] [bounded_order β] (f : bounded_lattice_hom α β) :
theorem bounded_lattice_hom.cancel_right {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] {g₁ g₂ : bounded_lattice_hom β γ} {f : bounded_lattice_hom α β} (hf : function.surjective f) :
g₁.comp f = g₂.comp f g₁ = g₂
theorem bounded_lattice_hom.cancel_left {α : Type u_2} {β : Type u_3} {γ : Type u_4} [lattice α] [lattice β] [lattice γ] [bounded_order α] [bounded_order β] [bounded_order γ] {g : bounded_lattice_hom β γ} {f₁ f₂ : bounded_lattice_hom α β} (hg : function.injective g) :
g.comp f₁ = g.comp f₂ f₁ = f₂