File: Mathlib/Order/Hom/Lattice.lean

full_name: SupHom.map_sup'
code: /-- The type of `⊔`-preserving functions from `α` to `β`. -/
structure SupHom (α β : Type*) [Sup α] [Sup β] where
  /-- The underlying function of a `SupHom` -/
  toFun : α → β
  /-- A `SupHom` preserves suprema. -/
  map_sup' (a b : α) : toFun (a ⊔ b) = toFun a ⊔ toFun b
goal: self.toFun (a ⊔ b) = self.toFun a ⊔ self.toFun b

full_name: SupHom.toFun
code: /-- The type of `⊔`-preserving functions from `α` to `β`. -/
structure SupHom (α β : Type*) [Sup α] [Sup β] where
  /-- The underlying function of a `SupHom` -/
  toFun : α → β
  /-- A `SupHom` preserves suprema. -/
  map_sup' (a b : α) : toFun (a ⊔ b) = toFun a ⊔ toFun b
goal: α → β

full_name: SupHom
code: /-- The type of `⊔`-preserving functions from `α` to `β`. -/
structure SupHom (α β : Type*) [Sup α] [Sup β] where
  /-- The underlying function of a `SupHom` -/
  toFun : α → β
  /-- A `SupHom` preserves suprema. -/
  map_sup' (a b : α) : toFun (a ⊔ b) = toFun a ⊔ toFun b
goal: Type (max u_7 u_8)

full_name: InfHom.toFun
code: /-- The type of `⊓`-preserving functions from `α` to `β`. -/
structure InfHom (α β : Type*) [Inf α] [Inf β] where
  /-- The underlying function of an `InfHom` -/
  toFun : α → β
  /-- An `InfHom` preserves infima. -/
  map_inf' (a b : α) : toFun (a ⊓ b) = toFun a ⊓ toFun b
goal: α → β

full_name: InfHom
code: /-- The type of `⊓`-preserving functions from `α` to `β`. -/
structure InfHom (α β : Type*) [Inf α] [Inf β] where
  /-- The underlying function of an `InfHom` -/
  toFun : α → β
  /-- An `InfHom` preserves infima. -/
  map_inf' (a b : α) : toFun (a ⊓ b) = toFun a ⊓ toFun b
goal: Type (max u_7 u_8)

full_name: InfHom.map_inf'
code: /-- The type of `⊓`-preserving functions from `α` to `β`. -/
structure InfHom (α β : Type*) [Inf α] [Inf β] where
  /-- The underlying function of an `InfHom` -/
  toFun : α → β
  /-- An `InfHom` preserves infima. -/
  map_inf' (a b : α) : toFun (a ⊓ b) = toFun a ⊓ toFun b
goal: self.toFun (a ⊓ b) = self.toFun a ⊓ self.toFun b

full_name: SupBotHom.map_bot'
code: /-- The type of finitary supremum-preserving homomorphisms from `α` to `β`. -/
structure SupBotHom (α β : Type*) [Sup α] [Sup β] [Bot α] [Bot β] extends SupHom α β where
  /-- A `SupBotHom` preserves the bottom element. -/
  map_bot' : toFun ⊥ = ⊥
goal: self.toFun ⊥ = ⊥

full_name: SupBotHom
code: /-- The type of finitary supremum-preserving homomorphisms from `α` to `β`. -/
structure SupBotHom (α β : Type*) [Sup α] [Sup β] [Bot α] [Bot β] extends SupHom α β where
  /-- A `SupBotHom` preserves the bottom element. -/
  map_bot' : toFun ⊥ = ⊥
goal: Type (max u_7 u_8)

full_name: InfTopHom.map_top'
code: /-- The type of finitary infimum-preserving homomorphisms from `α` to `β`. -/
structure InfTopHom (α β : Type*) [Inf α] [Inf β] [Top α] [Top β] extends InfHom α β where
  /-- An `InfTopHom` preserves the top element. -/
  map_top' : toFun ⊤ = ⊤
goal: self.toFun ⊤ = ⊤

full_name: InfTopHom
code: /-- The type of finitary infimum-preserving homomorphisms from `α` to `β`. -/
structure InfTopHom (α β : Type*) [Inf α] [Inf β] [Top α] [Top β] extends InfHom α β where
  /-- An `InfTopHom` preserves the top element. -/
  map_top' : toFun ⊤ = ⊤
goal: Type (max u_7 u_8)

full_name: LatticeHom.map_inf'
code: /-- The type of lattice homomorphisms from `α` to `β`. -/
structure LatticeHom (α β : Type*) [Lattice α] [Lattice β] extends SupHom α β where
  /-- A `LatticeHom` preserves infima. -/
  map_inf' (a b : α) : toFun (a ⊓ b) = toFun a ⊓ toFun b
goal: self.toFun (a ⊓ b) = self.toFun a ⊓ self.toFun b

full_name: LatticeHom
code: /-- The type of lattice homomorphisms from `α` to `β`. -/
structure LatticeHom (α β : Type*) [Lattice α] [Lattice β] extends SupHom α β where
  /-- A `LatticeHom` preserves infima. -/
  map_inf' (a b : α) : toFun (a ⊓ b) = toFun a ⊓ toFun b
goal: Type (max u_7 u_8)

full_name: BoundedLatticeHom.map_top'
code: /-- The type of bounded lattice homomorphisms from `α` to `β`. -/
structure BoundedLatticeHom (α β : Type*) [Lattice α] [Lattice β] [BoundedOrder α]
  [BoundedOrder β] extends LatticeHom α β where
  /-- A `BoundedLatticeHom` preserves the top element. -/
  map_top' : toFun ⊤ = ⊤
  /-- A `BoundedLatticeHom` preserves the bottom element. -/
  map_bot' : toFun ⊥ = ⊥
goal: self.toFun ⊤ = ⊤

full_name: BoundedLatticeHom.map_bot'
code: /-- The type of bounded lattice homomorphisms from `α` to `β`. -/
structure BoundedLatticeHom (α β : Type*) [Lattice α] [Lattice β] [BoundedOrder α]
  [BoundedOrder β] extends LatticeHom α β where
  /-- A `BoundedLatticeHom` preserves the top element. -/
  map_top' : toFun ⊤ = ⊤
  /-- A `BoundedLatticeHom` preserves the bottom element. -/
  map_bot' : toFun ⊥ = ⊥
goal: self.toFun ⊥ = ⊥

full_name: BoundedLatticeHom
code: /-- The type of bounded lattice homomorphisms from `α` to `β`. -/
structure BoundedLatticeHom (α β : Type*) [Lattice α] [Lattice β] [BoundedOrder α]
  [BoundedOrder β] extends LatticeHom α β where
  /-- A `BoundedLatticeHom` preserves the top element. -/
  map_top' : toFun ⊤ = ⊤
  /-- A `BoundedLatticeHom` preserves the bottom element. -/
  map_bot' : toFun ⊥ = ⊥
goal: Type (max u_7 u_8)

full_name: SupHomClass
code: /-- `SupHomClass F α β` states that `F` is a type of `⊔`-preserving morphisms.

You should extend this class when you extend `SupHom`. -/
class SupHomClass (F α β : Type*) [Sup α] [Sup β] [FunLike F α β] : Prop where
  /-- A `SupHomClass` morphism preserves suprema. -/
  map_sup (f : F) (a b : α) : f (a ⊔ b) = f a ⊔ f b
goal: Prop

full_name: SupHomClass.map_sup
code: /-- `SupHomClass F α β` states that `F` is a type of `⊔`-preserving morphisms.

You should extend this class when you extend `SupHom`. -/
class SupHomClass (F α β : Type*) [Sup α] [Sup β] [FunLike F α β] : Prop where
  /-- A `SupHomClass` morphism preserves suprema. -/
  map_sup (f : F) (a b : α) : f (a ⊔ b) = f a ⊔ f b
goal: f (a ⊔ b) = f a ⊔ f b

full_name: InfHomClass
code: /-- `InfHomClass F α β` states that `F` is a type of `⊓`-preserving morphisms.

You should extend this class when you extend `InfHom`. -/
class InfHomClass (F α β : Type*) [Inf α] [Inf β] [FunLike F α β] : Prop where
  /-- An `InfHomClass` morphism preserves infima. -/
  map_inf (f : F) (a b : α) : f (a ⊓ b) = f a ⊓ f b
goal: Prop

full_name: InfHomClass.map_inf
code: /-- `InfHomClass F α β` states that `F` is a type of `⊓`-preserving morphisms.

You should extend this class when you extend `InfHom`. -/
class InfHomClass (F α β : Type*) [Inf α] [Inf β] [FunLike F α β] : Prop where
  /-- An `InfHomClass` morphism preserves infima. -/
  map_inf (f : F) (a b : α) : f (a ⊓ b) = f a ⊓ f b
goal: f (a ⊓ b) = f a ⊓ f b

full_name: SupBotHomClass.map_bot
code: /-- `SupBotHomClass F α β` states that `F` is a type of finitary supremum-preserving morphisms.

You should extend this class when you extend `SupBotHom`. -/
class SupBotHomClass (F α β : Type*) [Sup α] [Sup β] [Bot α] [Bot β] [FunLike F α β]
  extends SupHomClass F α β : Prop where
  /-- A `SupBotHomClass` morphism preserves the bottom element. -/
  map_bot (f : F) : f ⊥ = ⊥
goal: f ⊥ = ⊥

full_name: SupBotHomClass
code: /-- `SupBotHomClass F α β` states that `F` is a type of finitary supremum-preserving morphisms.

You should extend this class when you extend `SupBotHom`. -/
class SupBotHomClass (F α β : Type*) [Sup α] [Sup β] [Bot α] [Bot β] [FunLike F α β]
  extends SupHomClass F α β : Prop where
  /-- A `SupBotHomClass` morphism preserves the bottom element. -/
  map_bot (f : F) : f ⊥ = ⊥
goal: Prop

full_name: InfTopHomClass.map_top
code: /-- `InfTopHomClass F α β` states that `F` is a type of finitary infimum-preserving morphisms.

You should extend this class when you extend `SupBotHom`. -/
class InfTopHomClass (F α β : Type*) [Inf α] [Inf β] [Top α] [Top β] [FunLike F α β]
  extends InfHomClass F α β : Prop where
  /-- An `InfTopHomClass` morphism preserves the top element. -/
  map_top (f : F) : f ⊤ = ⊤
goal: f ⊤ = ⊤

full_name: InfTopHomClass
code: /-- `InfTopHomClass F α β` states that `F` is a type of finitary infimum-preserving morphisms.

You should extend this class when you extend `SupBotHom`. -/
class InfTopHomClass (F α β : Type*) [Inf α] [Inf β] [Top α] [Top β] [FunLike F α β]
  extends InfHomClass F α β : Prop where
  /-- An `InfTopHomClass` morphism preserves the top element. -/
  map_top (f : F) : f ⊤ = ⊤
goal: Prop

full_name: LatticeHomClass.map_inf
code: /-- `LatticeHomClass F α β` states that `F` is a type of lattice morphisms.

You should extend this class when you extend `LatticeHom`. -/
class LatticeHomClass (F α β : Type*) [Lattice α] [Lattice β] [FunLike F α β]
  extends SupHomClass F α β : Prop where
  /-- A `LatticeHomClass` morphism preserves infima. -/
  map_inf (f : F) (a b : α) : f (a ⊓ b) = f a ⊓ f b
goal: f (a ⊓ b) = f a ⊓ f b

full_name: LatticeHomClass
code: /-- `LatticeHomClass F α β` states that `F` is a type of lattice morphisms.

You should extend this class when you extend `LatticeHom`. -/
class LatticeHomClass (F α β : Type*) [Lattice α] [Lattice β] [FunLike F α β]
  extends SupHomClass F α β : Prop where
  /-- A `LatticeHomClass` morphism preserves infima. -/
  map_inf (f : F) (a b : α) : f (a ⊓ b) = f a ⊓ f b
goal: Prop

full_name: BoundedLatticeHomClass.map_top
code: /-- `BoundedLatticeHomClass F α β` states that `F` is a type of bounded lattice morphisms.

You should extend this class when you extend `BoundedLatticeHom`. -/
class BoundedLatticeHomClass (F α β : Type*) [Lattice α] [Lattice β] [BoundedOrder α]
  [BoundedOrder β] [FunLike F α β] extends LatticeHomClass F α β : Prop where
  /-- A `BoundedLatticeHomClass` morphism preserves the top element. -/
  map_top (f : F) : f ⊤ = ⊤
  /-- A `BoundedLatticeHomClass` morphism preserves the bottom element. -/
  map_bot (f : F) : f ⊥ = ⊥
goal: f ⊤ = ⊤

full_name: BoundedLatticeHomClass
code: /-- `BoundedLatticeHomClass F α β` states that `F` is a type of bounded lattice morphisms.

You should extend this class when you extend `BoundedLatticeHom`. -/
class BoundedLatticeHomClass (F α β : Type*) [Lattice α] [Lattice β] [BoundedOrder α]
  [BoundedOrder β] [FunLike F α β] extends LatticeHomClass F α β : Prop where
  /-- A `BoundedLatticeHomClass` morphism preserves the top element. -/
  map_top (f : F) : f ⊤ = ⊤
  /-- A `BoundedLatticeHomClass` morphism preserves the bottom element. -/
  map_bot (f : F) : f ⊥ = ⊥
goal: Prop

full_name: BoundedLatticeHomClass.map_bot
code: /-- `BoundedLatticeHomClass F α β` states that `F` is a type of bounded lattice morphisms.

You should extend this class when you extend `BoundedLatticeHom`. -/
class BoundedLatticeHomClass (F α β : Type*) [Lattice α] [Lattice β] [BoundedOrder α]
  [BoundedOrder β] [FunLike F α β] extends LatticeHomClass F α β : Prop where
  /-- A `BoundedLatticeHomClass` morphism preserves the top element. -/
  map_top (f : F) : f ⊤ = ⊤
  /-- A `BoundedLatticeHomClass` morphism preserves the bottom element. -/
  map_bot (f : F) : f ⊥ = ⊥
goal: f ⊥ = ⊥

full_name: SupHomClass.toOrderHomClass
code: instance (priority := 100) SupHomClass.toOrderHomClass [SemilatticeSup α] [SemilatticeSup β]
    [SupHomClass F α β] : OrderHomClass F α β 
goal: OrderHomClass F α β

full_name: InfHomClass.toOrderHomClass
code: instance (priority := 100) InfHomClass.toOrderHomClass [SemilatticeInf α] [SemilatticeInf β]
    [InfHomClass F α β] : OrderHomClass F α β 
goal: OrderHomClass F α β

full_name: SupBotHomClass.toBotHomClass
code: instance (priority := 100) SupBotHomClass.toBotHomClass [Sup α] [Sup β] [Bot α]
    [Bot β] [SupBotHomClass F α β] : BotHomClass F α β 
goal: BotHomClass F α β

full_name: InfTopHomClass.toTopHomClass
code: instance (priority := 100) InfTopHomClass.toTopHomClass [Inf α] [Inf β] [Top α]
    [Top β] [InfTopHomClass F α β] : TopHomClass F α β 
goal: TopHomClass F α β

full_name: LatticeHomClass.toInfHomClass
code: instance (priority := 100) LatticeHomClass.toInfHomClass [Lattice α] [Lattice β]
    [LatticeHomClass F α β] : InfHomClass F α β 
goal: InfHomClass F α β

full_name: BoundedLatticeHomClass.toSupBotHomClass
code: instance (priority := 100) BoundedLatticeHomClass.toSupBotHomClass [Lattice α] [Lattice β]
    [BoundedOrder α] [BoundedOrder β] [BoundedLatticeHomClass F α β] :
    SupBotHomClass F α β 
goal: SupBotHomClass F α β

full_name: BoundedLatticeHomClass.toInfTopHomClass
code: instance (priority := 100) BoundedLatticeHomClass.toInfTopHomClass [Lattice α] [Lattice β]
    [BoundedOrder α] [BoundedOrder β] [BoundedLatticeHomClass F α β] :
    InfTopHomClass F α β 
goal: InfTopHomClass F α β

full_name: BoundedLatticeHomClass.toBoundedOrderHomClass
code: instance (priority := 100) BoundedLatticeHomClass.toBoundedOrderHomClass [Lattice α]
    [Lattice β] [BoundedOrder α] [BoundedOrder β] [BoundedLatticeHomClass F α β] :
    BoundedOrderHomClass F α β 
goal: BoundedOrderHomClass F α β

full_name: OrderIsoClass.toSupHomClass
code: instance (priority := 100) OrderIsoClass.toSupHomClass [SemilatticeSup α] [SemilatticeSup β]
    [OrderIsoClass F α β] : SupHomClass F α β 
goal: SupHomClass F α β

full_name: OrderIsoClass.toInfHomClass
code: instance (priority := 100) OrderIsoClass.toInfHomClass [SemilatticeInf α] [SemilatticeInf β]
    [OrderIsoClass F α β] : InfHomClass F α β 
goal: InfHomClass F α β

full_name: OrderIsoClass.toSupBotHomClass
code: instance (priority := 100) OrderIsoClass.toSupBotHomClass [SemilatticeSup α] [OrderBot α]
    [SemilatticeSup β] [OrderBot β] [OrderIsoClass F α β] : SupBotHomClass F α β 
goal: SupBotHomClass F α β

full_name: OrderIsoClass.toInfTopHomClass
code: instance (priority := 100) OrderIsoClass.toInfTopHomClass [SemilatticeInf α] [OrderTop α]
    [SemilatticeInf β] [OrderTop β] [OrderIsoClass F α β] : InfTopHomClass F α β 
goal: InfTopHomClass F α β

full_name: OrderIsoClass.toLatticeHomClass
code: instance (priority := 100) OrderIsoClass.toLatticeHomClass [Lattice α] [Lattice β]
    [OrderIsoClass F α β] : LatticeHomClass F α β 
goal: LatticeHomClass F α β

full_name: OrderIsoClass.toBoundedLatticeHomClass
code: instance (priority := 100) OrderIsoClass.toBoundedLatticeHomClass [Lattice α] [Lattice β]
    [BoundedOrder α] [BoundedOrder β] [OrderIsoClass F α β] :
    BoundedLatticeHomClass F α β 
goal: BoundedLatticeHomClass F α β

full_name: orderEmbeddingOfInjective_apply
code: /-- We can regard an injective map preserving binary infima as an order embedding. -/
@[simps! apply]
def orderEmbeddingOfInjective [SemilatticeInf α] [SemilatticeInf β] (f : F) [InfHomClass F α β]
    (hf : Injective f) : α ↪o β 
goal: (orderEmbeddingOfInjective f hf) a = f a

full_name: orderEmbeddingOfInjective
code: /-- We can regard an injective map preserving binary infima as an order embedding. -/
@[simps! apply]
def orderEmbeddingOfInjective [SemilatticeInf α] [SemilatticeInf β] (f : F) [InfHomClass F α β]
    (hf : Injective f) : α ↪o β 
goal: α ↪o β

full_name: Disjoint.map
code: theorem Disjoint.map (h : Disjoint a b) : Disjoint (f a) (f b) 
goal: Disjoint (f a) (f b)

full_name: Codisjoint.map
code: theorem Codisjoint.map (h : Codisjoint a b) : Codisjoint (f a) (f b) 
goal: Codisjoint (f a) (f b)

full_name: IsCompl.map
code: theorem IsCompl.map (h : IsCompl a b) : IsCompl (f a) (f b) 
goal: IsCompl (f a) (f b)

full_name: map_compl'
code: /-- Special case of `map_compl` for boolean algebras. -/
theorem map_compl' (a : α) : f aᶜ = (f a)ᶜ 
goal: f aᶜ = (f a)ᶜ

full_name: map_sdiff'
code: /-- Special case of `map_sdiff` for boolean algebras. -/
theorem map_sdiff' (a b : α) : f (a \ b) = f a \ f b 
goal: f (a \ b) = f a \ f b

full_name: map_symmDiff'
code: /-- Special case of `map_symmDiff` for boolean algebras. -/
theorem map_symmDiff' (a b : α) : f (a ∆ b) = f a ∆ f b 
goal: f (symmDiff a b) = symmDiff (f a) (f b)

full_name: instCoeTCSupHomOfSupHomClass
code: instance [Sup α] [Sup β] [SupHomClass F α β] : CoeTC F (SupHom α β) 
goal: CoeTC F (SupHom α β)

full_name: instCoeTCInfHomOfInfHomClass
code: instance [Inf α] [Inf β] [InfHomClass F α β] : CoeTC F (InfHom α β) 
goal: CoeTC F (InfHom α β)

full_name: instCoeTCSupBotHomOfSupBotHomClass
code: instance [Sup α] [Sup β] [Bot α] [Bot β] [SupBotHomClass F α β] : CoeTC F (SupBotHom α β) 
goal: CoeTC F (SupBotHom α β)

full_name: instCoeTCInfTopHomOfInfTopHomClass
code: instance [Inf α] [Inf β] [Top α] [Top β] [InfTopHomClass F α β] : CoeTC F (InfTopHom α β) 
goal: CoeTC F (InfTopHom α β)

full_name: instCoeTCLatticeHomOfLatticeHomClass
code: instance [Lattice α] [Lattice β] [LatticeHomClass F α β] : CoeTC F (LatticeHom α β) 
goal: CoeTC F (LatticeHom α β)

full_name: instCoeTCBoundedLatticeHomOfBoundedLatticeHomClass
code: instance [Lattice α] [Lattice β] [BoundedOrder α] [BoundedOrder β] [BoundedLatticeHomClass F α β] :
    CoeTC F (BoundedLatticeHom α β) 
goal: CoeTC F (BoundedLatticeHom α β)

full_name: SupHom.instFunLike
code: instance : FunLike (SupHom α β) α β 
goal: FunLike (SupHom α β) α β

full_name: SupHom.instSupHomClass
code: instance : SupHomClass (SupHom α β) α β 
goal: SupHomClass (SupHom α β) α β

full_name: SupHom.toFun_eq_coe
code: @[simp] lemma toFun_eq_coe (f : SupHom α β) : f.toFun = f 
goal: f.toFun = ⇑f

full_name: SupHom.coe_mk
code: @[simp, norm_cast] lemma coe_mk (f : α → β) (hf) : ⇑(mk f hf) = f 
goal: ⇑{ toFun := f, map_sup' := hf } = f

full_name: SupHom.ext
code: @[ext]
theorem ext {f g : SupHom α β} (h : ∀ a, f a = g a) : f = g 
goal: f = g

full_name: SupHom.copy
code: /-- Copy of a `SupHom` with a new `toFun` equal to the old one. Useful to fix definitional
equalities. -/
protected def copy (f : SupHom α β) (f' : α → β) (h : f' = f) : SupHom α β 
goal: SupHom α β

full_name: SupHom.coe_copy
code: @[simp]
theorem coe_copy (f : SupHom α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
goal: ⇑(f.copy f' h) = f'

full_name: SupHom.copy_eq
code: theorem copy_eq (f : SupHom α β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
goal: f.copy f' h = f

full_name: SupHom.id
code: /-- `id` as a `SupHom`. -/
protected def id : SupHom α α 
goal: SupHom α α

full_name: SupHom.instInhabited
code: instance : Inhabited (SupHom α α) 
goal: Inhabited (SupHom α α)

full_name: SupHom.coe_id
code: @[simp]
theorem coe_id : ⇑(SupHom.id α) = id 
goal: ⇑(SupHom.id α) = id

full_name: SupHom.id_apply
code: @[simp]
theorem id_apply (a : α) : SupHom.id α a = a 
goal: (SupHom.id α) a = a

full_name: SupHom.comp
code: /-- Composition of `SupHom`s as a `SupHom`. -/
def comp (f : SupHom β γ) (g : SupHom α β) : SupHom α γ 
goal: SupHom α γ

full_name: SupHom.coe_comp
code: @[simp]
theorem coe_comp (f : SupHom β γ) (g : SupHom α β) : (f.comp g : α → γ) = f ∘ g 
goal: ⇑(f.comp g) = ⇑f ∘ ⇑g

full_name: SupHom.comp_apply
code: @[simp]
theorem comp_apply (f : SupHom β γ) (g : SupHom α β) (a : α) : (f.comp g) a = f (g a) 
goal: (f.comp g) a = f (g a)

full_name: SupHom.comp_assoc
code: @[simp]
theorem comp_assoc (f : SupHom γ δ) (g : SupHom β γ) (h : SupHom α β) :
    (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: SupHom.comp_id
code: @[simp] theorem comp_id (f : SupHom α β) : f.comp (SupHom.id α) = f 
goal: f.comp (SupHom.id α) = f

full_name: SupHom.id_comp
code: @[simp] theorem id_comp (f : SupHom α β) : (SupHom.id β).comp f = f 
goal: (SupHom.id β).comp f = f

full_name: SupHom.cancel_right
code: @[simp]
theorem cancel_right {g₁ g₂ : SupHom β γ} {f : SupHom α β} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂

full_name: SupHom.cancel_left
code: @[simp]
theorem cancel_left {g : SupHom β γ} {f₁ f₂ : SupHom α β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂

full_name: SupHom.const
code: /-- The constant function as a `SupHom`. -/
def const (b : β) : SupHom α β 
goal: SupHom α β

full_name: SupHom.coe_const
code: @[simp]
theorem coe_const (b : β) : ⇑(const α b) = Function.const α b 
goal: ⇑(SupHom.const α b) = Function.const α b

full_name: SupHom.const_apply
code: @[simp]
theorem const_apply (b : β) (a : α) : const α b a = b 
goal: (SupHom.const α b) a = b

full_name: SupHom.instSup
code: instance : Sup (SupHom α β) 
goal: Sup (SupHom α β)

full_name: SupHom.instSemilatticeSup
code: instance : SemilatticeSup (SupHom α β) 
goal: SemilatticeSup (SupHom α β)

full_name: SupHom.instBot
code: instance [Bot β] : Bot (SupHom α β) 
goal: Bot (SupHom α β)

full_name: SupHom.instTop
code: instance [Top β] : Top (SupHom α β) 
goal: Top (SupHom α β)

full_name: SupHom.instOrderBot
code: instance [OrderBot β] : OrderBot (SupHom α β) 
goal: OrderBot (SupHom α β)

full_name: SupHom.instOrderTop
code: instance [OrderTop β] : OrderTop (SupHom α β) 
goal: OrderTop (SupHom α β)

full_name: SupHom.instBoundedOrder
code: instance [BoundedOrder β] : BoundedOrder (SupHom α β) 
goal: BoundedOrder (SupHom α β)

full_name: SupHom.coe_sup
code: @[simp]
theorem coe_sup (f g : SupHom α β) : DFunLike.coe (f ⊔ g) = f ⊔ g 
goal: ⇑(f ⊔ g) = ⇑(f ⊔ g)

full_name: SupHom.coe_bot
code: @[simp]
theorem coe_bot [Bot β] : ⇑(⊥ : SupHom α β) = ⊥ 
goal: ⇑⊥ = ⊥

full_name: SupHom.coe_top
code: @[simp]
theorem coe_top [Top β] : ⇑(⊤ : SupHom α β) = ⊤ 
goal: ⇑⊤ = ⊤

full_name: SupHom.sup_apply
code: @[simp]
theorem sup_apply (f g : SupHom α β) (a : α) : (f ⊔ g) a = f a ⊔ g a 
goal: (f ⊔ g) a = f a ⊔ g a

full_name: SupHom.bot_apply
code: @[simp]
theorem bot_apply [Bot β] (a : α) : (⊥ : SupHom α β) a = ⊥ 
goal: ⊥ a = ⊥

full_name: SupHom.top_apply
code: @[simp]
theorem top_apply [Top β] (a : α) : (⊤ : SupHom α β) a = ⊤ 
goal: ⊤ a = ⊤

full_name: InfHom.instFunLike
code: instance : FunLike (InfHom α β) α β 
goal: FunLike (InfHom α β) α β

full_name: InfHom.instInfHomClass
code: instance : InfHomClass (InfHom α β) α β 
goal: InfHomClass (InfHom α β) α β

full_name: InfHom.toFun_eq_coe
code: @[simp] lemma toFun_eq_coe (f : InfHom α β) : f.toFun = (f : α → β) 
goal: f.toFun = ⇑f

full_name: InfHom.coe_mk
code: @[simp, norm_cast] lemma coe_mk (f : α → β) (hf) : ⇑(mk f hf) = f 
goal: ⇑{ toFun := f, map_inf' := hf } = f

full_name: InfHom.ext
code: @[ext]
theorem ext {f g : InfHom α β} (h : ∀ a, f a = g a) : f = g 
goal: f = g

full_name: InfHom.copy
code: /-- Copy of an `InfHom` with a new `toFun` equal to the old one. Useful to fix definitional
equalities. -/
protected def copy (f : InfHom α β) (f' : α → β) (h : f' = f) : InfHom α β 
goal: InfHom α β

full_name: InfHom.coe_copy
code: @[simp]
theorem coe_copy (f : InfHom α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
goal: ⇑(f.copy f' h) = f'

full_name: InfHom.copy_eq
code: theorem copy_eq (f : InfHom α β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
goal: f.copy f' h = f

full_name: InfHom.id
code: /-- `id` as an `InfHom`. -/
protected def id : InfHom α α 
goal: InfHom α α

full_name: InfHom.instInhabited
code: instance : Inhabited (InfHom α α) 
goal: Inhabited (InfHom α α)

full_name: InfHom.coe_id
code: @[simp]
theorem coe_id : ⇑(InfHom.id α) = id 
goal: ⇑(InfHom.id α) = id

full_name: InfHom.id_apply
code: @[simp]
theorem id_apply (a : α) : InfHom.id α a = a 
goal: (InfHom.id α) a = a

full_name: InfHom.comp
code: /-- Composition of `InfHom`s as an `InfHom`. -/
def comp (f : InfHom β γ) (g : InfHom α β) : InfHom α γ 
goal: InfHom α γ

full_name: InfHom.coe_comp
code: @[simp]
theorem coe_comp (f : InfHom β γ) (g : InfHom α β) : (f.comp g : α → γ) = f ∘ g 
goal: ⇑(f.comp g) = ⇑f ∘ ⇑g

full_name: InfHom.comp_apply
code: @[simp]
theorem comp_apply (f : InfHom β γ) (g : InfHom α β) (a : α) : (f.comp g) a = f (g a) 
goal: (f.comp g) a = f (g a)

full_name: InfHom.comp_assoc
code: @[simp]
theorem comp_assoc (f : InfHom γ δ) (g : InfHom β γ) (h : InfHom α β) :
    (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: InfHom.comp_id
code: @[simp] theorem comp_id (f : InfHom α β) : f.comp (InfHom.id α) = f 
goal: f.comp (InfHom.id α) = f

full_name: InfHom.id_comp
code: @[simp] theorem id_comp (f : InfHom α β) : (InfHom.id β).comp f = f 
goal: (InfHom.id β).comp f = f

full_name: InfHom.cancel_right
code: @[simp]
theorem cancel_right {g₁ g₂ : InfHom β γ} {f : InfHom α β} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂

full_name: InfHom.cancel_left
code: @[simp]
theorem cancel_left {g : InfHom β γ} {f₁ f₂ : InfHom α β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂

full_name: InfHom.const
code: /-- The constant function as an `InfHom`. -/
def const (b : β) : InfHom α β 
goal: InfHom α β

full_name: InfHom.coe_const
code: @[simp]
theorem coe_const (b : β) : ⇑(const α b) = Function.const α b 
goal: ⇑(InfHom.const α b) = Function.const α b

full_name: InfHom.const_apply
code: @[simp]
theorem const_apply (b : β) (a : α) : const α b a = b 
goal: (InfHom.const α b) a = b

full_name: InfHom.instInf
code: instance : Inf (InfHom α β) 
goal: Inf (InfHom α β)

full_name: InfHom.instSemilatticeInf
code: instance : SemilatticeInf (InfHom α β) 
goal: SemilatticeInf (InfHom α β)

full_name: InfHom.instBot
code: instance [Bot β] : Bot (InfHom α β) 
goal: Bot (InfHom α β)

full_name: InfHom.instTop
code: instance [Top β] : Top (InfHom α β) 
goal: Top (InfHom α β)

full_name: InfHom.instOrderBot
code: instance [OrderBot β] : OrderBot (InfHom α β) 
goal: OrderBot (InfHom α β)

full_name: InfHom.instOrderTop
code: instance [OrderTop β] : OrderTop (InfHom α β) 
goal: OrderTop (InfHom α β)

full_name: InfHom.instBoundedOrder
code: instance [BoundedOrder β] : BoundedOrder (InfHom α β) 
goal: BoundedOrder (InfHom α β)

full_name: InfHom.coe_inf
code: @[simp]
theorem coe_inf (f g : InfHom α β) : DFunLike.coe (f ⊓ g) = f ⊓ g 
goal: ⇑(f ⊓ g) = ⇑(f ⊓ g)

full_name: InfHom.coe_bot
code: @[simp]
theorem coe_bot [Bot β] : ⇑(⊥ : InfHom α β) = ⊥ 
goal: ⇑⊥ = ⊥

full_name: InfHom.coe_top
code: @[simp]
theorem coe_top [Top β] : ⇑(⊤ : InfHom α β) = ⊤ 
goal: ⇑⊤ = ⊤

full_name: InfHom.inf_apply
code: @[simp]
theorem inf_apply (f g : InfHom α β) (a : α) : (f ⊓ g) a = f a ⊓ g a 
goal: (f ⊓ g) a = f a ⊓ g a

full_name: InfHom.bot_apply
code: @[simp]
theorem bot_apply [Bot β] (a : α) : (⊥ : InfHom α β) a = ⊥ 
goal: ⊥ a = ⊥

full_name: InfHom.top_apply
code: @[simp]
theorem top_apply [Top β] (a : α) : (⊤ : InfHom α β) a = ⊤ 
goal: ⊤ a = ⊤

full_name: SupBotHom.toBotHom
code: /-- Reinterpret a `SupBotHom` as a `BotHom`. -/
def toBotHom (f : SupBotHom α β) : BotHom α β 
goal: BotHom α β

full_name: SupBotHom.instFunLike
code: instance : FunLike (SupBotHom α β) α β 
goal: FunLike (SupBotHom α β) α β

full_name: SupBotHom.instSupBotHomClass
code: instance : SupBotHomClass (SupBotHom α β) α β 
goal: SupBotHomClass (SupBotHom α β) α β

full_name: SupBotHom.toFun_eq_coe
code: lemma toFun_eq_coe (f : SupBotHom α β) : f.toFun = f 
goal: f.toFun = ⇑f

full_name: SupBotHom.coe_toSupHom
code: @[simp] lemma coe_toSupHom (f : SupBotHom α β) : ⇑f.toSupHom = f 
goal: ⇑f.toSupHom = ⇑f

full_name: SupBotHom.coe_toBotHom
code: @[simp] lemma coe_toBotHom (f : SupBotHom α β) : ⇑f.toBotHom = f 
goal: ⇑f.toBotHom = ⇑f

full_name: SupBotHom.coe_mk
code: @[simp] lemma coe_mk (f : SupHom α β) (hf) : ⇑(mk f hf) = f 
goal: ⇑{ toSupHom := f, map_bot' := hf } = ⇑f

full_name: SupBotHom.ext
code: @[ext]
theorem ext {f g : SupBotHom α β} (h : ∀ a, f a = g a) : f = g 
goal: f = g

full_name: SupBotHom.copy
code: /-- Copy of a `SupBotHom` with a new `toFun` equal to the old one. Useful to fix definitional
equalities. -/
protected def copy (f : SupBotHom α β) (f' : α → β) (h : f' = f) : SupBotHom α β 
goal: SupBotHom α β

full_name: SupBotHom.coe_copy
code: @[simp]
theorem coe_copy (f : SupBotHom α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
goal: ⇑(f.copy f' h) = f'

full_name: SupBotHom.copy_eq
code: theorem copy_eq (f : SupBotHom α β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
goal: f.copy f' h = f

full_name: SupBotHom.id_toSupHom
code: /-- `id` as a `SupBotHom`. -/
@[simps]
protected def id : SupBotHom α α 
goal: (SupBotHom.id α).toSupHom = SupHom.id α

full_name: SupBotHom.id
code: /-- `id` as a `SupBotHom`. -/
@[simps]
protected def id : SupBotHom α α 
goal: SupBotHom α α

full_name: SupBotHom.instInhabited
code: instance : Inhabited (SupBotHom α α) 
goal: Inhabited (SupBotHom α α)

full_name: SupBotHom.coe_id
code: @[simp]
theorem coe_id : ⇑(SupBotHom.id α) = id 
goal: ⇑(SupBotHom.id α) = id

full_name: SupBotHom.id_apply
code: @[simp]
theorem id_apply (a : α) : SupBotHom.id α a = a 
goal: (SupBotHom.id α) a = a

full_name: SupBotHom.comp
code: /-- Composition of `SupBotHom`s as a `SupBotHom`. -/
def comp (f : SupBotHom β γ) (g : SupBotHom α β) : SupBotHom α γ 
goal: SupBotHom α γ

full_name: SupBotHom.coe_comp
code: @[simp]
theorem coe_comp (f : SupBotHom β γ) (g : SupBotHom α β) : (f.comp g : α → γ) = f ∘ g 
goal: ⇑(f.comp g) = ⇑f ∘ ⇑g

full_name: SupBotHom.comp_apply
code: @[simp]
theorem comp_apply (f : SupBotHom β γ) (g : SupBotHom α β) (a : α) : (f.comp g) a = f (g a) 
goal: (f.comp g) a = f (g a)

full_name: SupBotHom.comp_assoc
code: @[simp]
theorem comp_assoc (f : SupBotHom γ δ) (g : SupBotHom β γ) (h : SupBotHom α β) :
    (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: SupBotHom.comp_id
code: @[simp] theorem comp_id (f : SupBotHom α β) : f.comp (SupBotHom.id α) = f 
goal: f.comp (SupBotHom.id α) = f

full_name: SupBotHom.id_comp
code: @[simp] theorem id_comp (f : SupBotHom α β) : (SupBotHom.id β).comp f = f 
goal: (SupBotHom.id β).comp f = f

full_name: SupBotHom.cancel_right
code: @[simp]
theorem cancel_right {g₁ g₂ : SupBotHom β γ} {f : SupBotHom α β} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂

full_name: SupBotHom.cancel_left
code: @[simp]
theorem cancel_left {g : SupBotHom β γ} {f₁ f₂ : SupBotHom α β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂

full_name: SupBotHom.instSup
code: instance : Sup (SupBotHom α β) 
goal: Sup (SupBotHom α β)

full_name: SupBotHom.instSemilatticeSup
code: instance : SemilatticeSup (SupBotHom α β) 
goal: SemilatticeSup (SupBotHom α β)

full_name: SupBotHom.instOrderBot
code: instance : OrderBot (SupBotHom α β) 
goal: OrderBot (SupBotHom α β)

full_name: SupBotHom.coe_sup
code: @[simp]
theorem coe_sup (f g : SupBotHom α β) : DFunLike.coe (f ⊔ g) = f ⊔ g 
goal: ⇑(f ⊔ g) = ⇑(f ⊔ g)

full_name: SupBotHom.coe_bot
code: @[simp]
theorem coe_bot : ⇑(⊥ : SupBotHom α β) = ⊥ 
goal: ⇑⊥ = ⊥

full_name: SupBotHom.sup_apply
code: @[simp]
theorem sup_apply (f g : SupBotHom α β) (a : α) : (f ⊔ g) a = f a ⊔ g a 
goal: (f ⊔ g) a = f a ⊔ g a

full_name: SupBotHom.bot_apply
code: @[simp]
theorem bot_apply (a : α) : (⊥ : SupBotHom α β) a = ⊥ 
goal: ⊥ a = ⊥

full_name: InfTopHom.toTopHom
code: /-- Reinterpret an `InfTopHom` as a `TopHom`. -/
def toTopHom (f : InfTopHom α β) : TopHom α β 
goal: TopHom α β

full_name: InfTopHom.instFunLike
code: instance : FunLike (InfTopHom α β) α β 
goal: FunLike (InfTopHom α β) α β

full_name: InfTopHom.instInfTopHomClass
code: instance : InfTopHomClass (InfTopHom α β) α β 
goal: InfTopHomClass (InfTopHom α β) α β

full_name: InfTopHom.toFun_eq_coe
code: theorem toFun_eq_coe (f : InfTopHom α β) : f.toFun = f 
goal: f.toFun = ⇑f

full_name: InfTopHom.coe_toInfHom
code: @[simp] lemma coe_toInfHom (f : InfTopHom α β) : ⇑f.toInfHom = f 
goal: ⇑f.toInfHom = ⇑f

full_name: InfTopHom.coe_toTopHom
code: @[simp] lemma coe_toTopHom (f : InfTopHom α β) : ⇑f.toTopHom = f 
goal: ⇑f.toTopHom = ⇑f

full_name: InfTopHom.coe_mk
code: @[simp] lemma coe_mk (f : InfHom α β) (hf) : ⇑(mk f hf) = f 
goal: ⇑{ toInfHom := f, map_top' := hf } = ⇑f

full_name: InfTopHom.ext
code: @[ext]
theorem ext {f g : InfTopHom α β} (h : ∀ a, f a = g a) : f = g 
goal: f = g

full_name: InfTopHom.copy
code: /-- Copy of an `InfTopHom` with a new `toFun` equal to the old one. Useful to fix definitional
equalities. -/
protected def copy (f : InfTopHom α β) (f' : α → β) (h : f' = f) : InfTopHom α β 
goal: InfTopHom α β

full_name: InfTopHom.coe_copy
code: @[simp]
theorem coe_copy (f : InfTopHom α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
goal: ⇑(f.copy f' h) = f'

full_name: InfTopHom.copy_eq
code: theorem copy_eq (f : InfTopHom α β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
goal: f.copy f' h = f

full_name: InfTopHom.id
code: /-- `id` as an `InfTopHom`. -/
@[simps]
protected def id : InfTopHom α α 
goal: InfTopHom α α

full_name: InfTopHom.id_toInfHom
code: /-- `id` as an `InfTopHom`. -/
@[simps]
protected def id : InfTopHom α α 
goal: (InfTopHom.id α).toInfHom = InfHom.id α

full_name: InfTopHom.instInhabited
code: instance : Inhabited (InfTopHom α α) 
goal: Inhabited (InfTopHom α α)

full_name: InfTopHom.coe_id
code: @[simp]
theorem coe_id : ⇑(InfTopHom.id α) = id 
goal: ⇑(InfTopHom.id α) = id

full_name: InfTopHom.id_apply
code: @[simp]
theorem id_apply (a : α) : InfTopHom.id α a = a 
goal: (InfTopHom.id α) a = a

full_name: InfTopHom.comp
code: /-- Composition of `InfTopHom`s as an `InfTopHom`. -/
def comp (f : InfTopHom β γ) (g : InfTopHom α β) : InfTopHom α γ 
goal: InfTopHom α γ

full_name: InfTopHom.coe_comp
code: @[simp]
theorem coe_comp (f : InfTopHom β γ) (g : InfTopHom α β) : (f.comp g : α → γ) = f ∘ g 
goal: ⇑(f.comp g) = ⇑f ∘ ⇑g

full_name: InfTopHom.comp_apply
code: @[simp]
theorem comp_apply (f : InfTopHom β γ) (g : InfTopHom α β) (a : α) : (f.comp g) a = f (g a) 
goal: (f.comp g) a = f (g a)

full_name: InfTopHom.comp_assoc
code: @[simp]
theorem comp_assoc (f : InfTopHom γ δ) (g : InfTopHom β γ) (h : InfTopHom α β) :
    (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: InfTopHom.comp_id
code: @[simp] theorem comp_id (f : InfTopHom α β) : f.comp (InfTopHom.id α) = f 
goal: f.comp (InfTopHom.id α) = f

full_name: InfTopHom.id_comp
code: @[simp] theorem id_comp (f : InfTopHom α β) : (InfTopHom.id β).comp f = f 
goal: (InfTopHom.id β).comp f = f

full_name: InfTopHom.cancel_right
code: @[simp]
theorem cancel_right {g₁ g₂ : InfTopHom β γ} {f : InfTopHom α β} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂

full_name: InfTopHom.cancel_left
code: @[simp]
theorem cancel_left {g : InfTopHom β γ} {f₁ f₂ : InfTopHom α β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂

full_name: InfTopHom.instInf
code: instance : Inf (InfTopHom α β) 
goal: Inf (InfTopHom α β)

full_name: InfTopHom.instSemilatticeInf
code: instance : SemilatticeInf (InfTopHom α β) 
goal: SemilatticeInf (InfTopHom α β)

full_name: InfTopHom.instOrderTop
code: instance : OrderTop (InfTopHom α β) 
goal: OrderTop (InfTopHom α β)

full_name: InfTopHom.coe_inf
code: @[simp]
theorem coe_inf (f g : InfTopHom α β) : DFunLike.coe (f ⊓ g) = f ⊓ g 
goal: ⇑(f ⊓ g) = ⇑(f ⊓ g)

full_name: InfTopHom.coe_top
code: @[simp]
theorem coe_top : ⇑(⊤ : InfTopHom α β) = ⊤ 
goal: ⇑⊤ = ⊤

full_name: InfTopHom.inf_apply
code: @[simp]
theorem inf_apply (f g : InfTopHom α β) (a : α) : (f ⊓ g) a = f a ⊓ g a 
goal: (f ⊓ g) a = f a ⊓ g a

full_name: InfTopHom.top_apply
code: @[simp]
theorem top_apply (a : α) : (⊤ : InfTopHom α β) a = ⊤ 
goal: ⊤ a = ⊤

full_name: LatticeHom.toInfHom
code: /-- Reinterpret a `LatticeHom` as an `InfHom`. -/
def toInfHom (f : LatticeHom α β) : InfHom α β 
goal: InfHom α β

full_name: LatticeHom.instFunLike
code: instance : FunLike (LatticeHom α β) α β 
goal: FunLike (LatticeHom α β) α β

full_name: LatticeHom.instLatticeHomClass
code: instance : LatticeHomClass (LatticeHom α β) α β 
goal: LatticeHomClass (LatticeHom α β) α β

full_name: LatticeHom.toFun_eq_coe
code: lemma toFun_eq_coe (f : LatticeHom α β) : f.toFun = f 
goal: f.toFun = ⇑f

full_name: LatticeHom.coe_toSupHom
code: @[simp] lemma coe_toSupHom (f : LatticeHom α β) : ⇑f.toSupHom = f 
goal: ⇑f.toSupHom = ⇑f

full_name: LatticeHom.coe_toInfHom
code: @[simp] lemma coe_toInfHom (f : LatticeHom α β) : ⇑f.toInfHom = f 
goal: ⇑f.toInfHom = ⇑f

full_name: LatticeHom.coe_mk
code: @[simp] lemma coe_mk (f : SupHom α β) (hf) : ⇑(mk f hf) = f 
goal: ⇑{ toSupHom := f, map_inf' := hf } = ⇑f

full_name: LatticeHom.ext
code: @[ext]
theorem ext {f g : LatticeHom α β} (h : ∀ a, f a = g a) : f = g 
goal: f = g

full_name: LatticeHom.copy
code: /-- Copy of a `LatticeHom` with a new `toFun` equal to the old one. Useful to fix definitional
equalities. -/
protected def copy (f : LatticeHom α β) (f' : α → β) (h : f' = f) : LatticeHom α β 
goal: LatticeHom α β

full_name: LatticeHom.coe_copy
code: @[simp]
theorem coe_copy (f : LatticeHom α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
goal: ⇑(f.copy f' h) = f'

full_name: LatticeHom.copy_eq
code: theorem copy_eq (f : LatticeHom α β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
goal: f.copy f' h = f

full_name: LatticeHom.id
code: /-- `id` as a `LatticeHom`. -/
protected def id : LatticeHom α α 
goal: LatticeHom α α

full_name: LatticeHom.instInhabited
code: instance : Inhabited (LatticeHom α α) 
goal: Inhabited (LatticeHom α α)

full_name: LatticeHom.coe_id
code: @[simp]
theorem coe_id : ⇑(LatticeHom.id α) = id 
goal: ⇑(LatticeHom.id α) = id

full_name: LatticeHom.id_apply
code: @[simp]
theorem id_apply (a : α) : LatticeHom.id α a = a 
goal: (LatticeHom.id α) a = a

full_name: LatticeHom.comp
code: /-- Composition of `LatticeHom`s as a `LatticeHom`. -/
def comp (f : LatticeHom β γ) (g : LatticeHom α β) : LatticeHom α γ 
goal: LatticeHom α γ

full_name: LatticeHom.coe_comp
code: @[simp]
theorem coe_comp (f : LatticeHom β γ) (g : LatticeHom α β) : (f.comp g : α → γ) = f ∘ g 
goal: ⇑(f.comp g) = ⇑f ∘ ⇑g

full_name: LatticeHom.comp_apply
code: @[simp]
theorem comp_apply (f : LatticeHom β γ) (g : LatticeHom α β) (a : α) : (f.comp g) a = f (g a) 
goal: (f.comp g) a = f (g a)

full_name: LatticeHom.coe_comp_sup_hom'
code: @[simp]
-- Porting note: `simp`-normal form of `coe_comp_sup_hom`
theorem coe_comp_sup_hom' (f : LatticeHom β γ) (g : LatticeHom α β) :
    ⟨f ∘ g, map_sup (f.comp g)⟩ = (f : SupHom β γ).comp g 
goal: { toFun := ⇑f ∘ ⇑g, map_sup' := ⋯ } = { toFun := ⇑f, map_sup' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯ }

full_name: LatticeHom.coe_comp_sup_hom
code: theorem coe_comp_sup_hom (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g : SupHom α γ) = (f : SupHom β γ).comp g 
goal: { toFun := ⇑(f.comp g), map_sup' := ⋯ } = { toFun := ⇑f, map_sup' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯ }

full_name: LatticeHom.coe_comp_inf_hom'
code: @[simp]
-- Porting note: `simp`-normal form of `coe_comp_inf_hom`
theorem coe_comp_inf_hom' (f : LatticeHom β γ) (g : LatticeHom α β) :
    ⟨f ∘ g, map_inf (f.comp g)⟩ = (f : InfHom β γ).comp g 
goal: { toFun := ⇑f ∘ ⇑g, map_inf' := ⋯ } = { toFun := ⇑f, map_inf' := ⋯ }.comp { toFun := ⇑g, map_inf' := ⋯ }

full_name: LatticeHom.coe_comp_inf_hom
code: theorem coe_comp_inf_hom (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g : InfHom α γ) = (f : InfHom β γ).comp g 
goal: { toFun := ⇑(f.comp g), map_inf' := ⋯ } = { toFun := ⇑f, map_inf' := ⋯ }.comp { toFun := ⇑g, map_inf' := ⋯ }

full_name: LatticeHom.comp_assoc
code: @[simp]
theorem comp_assoc (f : LatticeHom γ δ) (g : LatticeHom β γ) (h : LatticeHom α β) :
    (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: LatticeHom.comp_id
code: @[simp]
theorem comp_id (f : LatticeHom α β) : f.comp (LatticeHom.id α) = f 
goal: f.comp (LatticeHom.id α) = f

full_name: LatticeHom.id_comp
code: @[simp]
theorem id_comp (f : LatticeHom α β) : (LatticeHom.id β).comp f = f 
goal: (LatticeHom.id β).comp f = f

full_name: LatticeHom.cancel_right
code: @[simp]
theorem cancel_right {g₁ g₂ : LatticeHom β γ} {f : LatticeHom α β} (hf : Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂

full_name: LatticeHom.cancel_left
code: @[simp]
theorem cancel_left {g : LatticeHom β γ} {f₁ f₂ : LatticeHom α β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂

full_name: OrderHomClass.toLatticeHomClass
code: /-- An order homomorphism from a linear order is a lattice homomorphism. -/
-- Porting note: made it an `instance` because we're no longer afraid of loops
instance (priority := 100) toLatticeHomClass : LatticeHomClass F α β 
goal: LatticeHomClass F α β

full_name: OrderHomClass.toLatticeHom
code: /-- Reinterpret an order homomorphism to a linear order as a `LatticeHom`. -/
def toLatticeHom (f : F) : LatticeHom α β 
goal: LatticeHom α β

full_name: OrderHomClass.coe_to_lattice_hom
code: @[simp]
theorem coe_to_lattice_hom (f : F) : ⇑(toLatticeHom α β f) = f 
goal: ⇑(OrderHomClass.toLatticeHom α β f) = ⇑f

full_name: OrderHomClass.to_lattice_hom_apply
code: @[simp]
theorem to_lattice_hom_apply (f : F) (a : α) : toLatticeHom α β f a = f a 
goal: (OrderHomClass.toLatticeHom α β f) a = f a

full_name: BoundedLatticeHom.toSupBotHom
code: /-- Reinterpret a `BoundedLatticeHom` as a `SupBotHom`. -/
def toSupBotHom (f : BoundedLatticeHom α β) : SupBotHom α β 
goal: SupBotHom α β

full_name: BoundedLatticeHom.toInfTopHom
code: /-- Reinterpret a `BoundedLatticeHom` as an `InfTopHom`. -/
def toInfTopHom (f : BoundedLatticeHom α β) : InfTopHom α β 
goal: InfTopHom α β

full_name: BoundedLatticeHom.toBoundedOrderHom
code: /-- Reinterpret a `BoundedLatticeHom` as a `BoundedOrderHom`. -/
def toBoundedOrderHom (f : BoundedLatticeHom α β) : BoundedOrderHom α β 
goal: BoundedOrderHom α β

full_name: BoundedLatticeHom.instFunLike
code: instance instFunLike : FunLike (BoundedLatticeHom α β) α β 
goal: FunLike (BoundedLatticeHom α β) α β

full_name: BoundedLatticeHom.instBoundedLatticeHomClass
code: instance instBoundedLatticeHomClass : BoundedLatticeHomClass (BoundedLatticeHom α β) α β 
goal: BoundedLatticeHomClass (BoundedLatticeHom α β) α β

full_name: BoundedLatticeHom.toFun_eq_coe
code: @[simp] lemma toFun_eq_coe (f : BoundedLatticeHom α β) : f.toFun = f 
goal: f.toFun = ⇑f

full_name: BoundedLatticeHom.coe_toLatticeHom
code: @[simp] lemma coe_toLatticeHom (f : BoundedLatticeHom α β) : ⇑f.toLatticeHom = f 
goal: ⇑f.toLatticeHom = ⇑f

full_name: BoundedLatticeHom.coe_toSupBotHom
code: @[simp] lemma coe_toSupBotHom (f : BoundedLatticeHom α β) : ⇑f.toSupBotHom = f 
goal: ⇑f.toSupBotHom = ⇑f

full_name: BoundedLatticeHom.coe_toInfTopHom
code: @[simp] lemma coe_toInfTopHom (f : BoundedLatticeHom α β) : ⇑f.toInfTopHom = f 
goal: ⇑f.toInfTopHom = ⇑f

full_name: BoundedLatticeHom.coe_toBoundedOrderHom
code: @[simp] lemma coe_toBoundedOrderHom (f : BoundedLatticeHom α β) : ⇑f.toBoundedOrderHom = f 
goal: ⇑f.toBoundedOrderHom = ⇑f

full_name: BoundedLatticeHom.coe_mk
code: @[simp] lemma coe_mk (f : LatticeHom α β) (hf hf') : ⇑(mk f hf hf') = f 
goal: ⇑{ toLatticeHom := f, map_top' := hf, map_bot' := hf' } = ⇑f

full_name: BoundedLatticeHom.ext
code: @[ext]
theorem ext {f g : BoundedLatticeHom α β} (h : ∀ a, f a = g a) : f = g 
goal: f = g

full_name: BoundedLatticeHom.copy
code: /-- Copy of a `BoundedLatticeHom` with a new `toFun` equal to the old one. Useful to fix
definitional equalities. -/
protected def copy (f : BoundedLatticeHom α β) (f' : α → β) (h : f' = f) : BoundedLatticeHom α β 
goal: BoundedLatticeHom α β

full_name: BoundedLatticeHom.coe_copy
code: @[simp]
theorem coe_copy (f : BoundedLatticeHom α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' 
goal: ⇑(f.copy f' h) = f'

full_name: BoundedLatticeHom.copy_eq
code: theorem copy_eq (f : BoundedLatticeHom α β) (f' : α → β) (h : f' = f) : f.copy f' h = f 
goal: f.copy f' h = f

full_name: BoundedLatticeHom.id
code: /-- `id` as a `BoundedLatticeHom`. -/
protected def id : BoundedLatticeHom α α 
goal: BoundedLatticeHom α α

full_name: BoundedLatticeHom.instInhabited
code: instance : Inhabited (BoundedLatticeHom α α) 
goal: Inhabited (BoundedLatticeHom α α)

full_name: BoundedLatticeHom.coe_id
code: @[simp]
theorem coe_id : ⇑(BoundedLatticeHom.id α) = id 
goal: ⇑(BoundedLatticeHom.id α) = id

full_name: BoundedLatticeHom.id_apply
code: @[simp]
theorem id_apply (a : α) : BoundedLatticeHom.id α a = a 
goal: (BoundedLatticeHom.id α) a = a

full_name: BoundedLatticeHom.comp
code: /-- Composition of `BoundedLatticeHom`s as a `BoundedLatticeHom`. -/
def comp (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) : BoundedLatticeHom α γ 
goal: BoundedLatticeHom α γ

full_name: BoundedLatticeHom.coe_comp
code: @[simp]
theorem coe_comp (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    (f.comp g : α → γ) = f ∘ g 
goal: ⇑(f.comp g) = ⇑f ∘ ⇑g

full_name: BoundedLatticeHom.comp_apply
code: @[simp]
theorem comp_apply (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) (a : α) :
    (f.comp g) a = f (g a) 
goal: (f.comp g) a = f (g a)

full_name: BoundedLatticeHom.coe_comp_lattice_hom'
code: @[simp]
-- Porting note: `simp`-normal form of `coe_comp_lattice_hom`
theorem coe_comp_lattice_hom' (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    (⟨(f : SupHom β γ).comp g, map_inf (f.comp g)⟩ : LatticeHom α γ) =
      (f : LatticeHom β γ).comp g 
goal: { toSupHom := { toFun := ⇑f, map_sup' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯ }, map_inf' := ⋯ } =
  { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯, map_inf' := ⋯ }

full_name: BoundedLatticeHom.coe_comp_lattice_hom
code: theorem coe_comp_lattice_hom (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    (f.comp g : LatticeHom α γ) = (f : LatticeHom β γ).comp g 
goal: { toFun := ⇑(f.comp g), map_sup' := ⋯, map_inf' := ⋯ } =
  { toFun := ⇑f, map_sup' := ⋯, map_inf' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯, map_inf' := ⋯ }

full_name: BoundedLatticeHom.coe_comp_sup_hom'
code: @[simp]
-- Porting note: `simp`-normal form of `coe_comp_sup_hom`
theorem coe_comp_sup_hom' (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    ⟨f ∘ g, map_sup (f.comp g)⟩ = (f : SupHom β γ).comp g 
goal: { toFun := ⇑f ∘ ⇑g, map_sup' := ⋯ } = { toFun := ⇑f, map_sup' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯ }

full_name: BoundedLatticeHom.coe_comp_sup_hom
code: theorem coe_comp_sup_hom (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    (f.comp g : SupHom α γ) = (f : SupHom β γ).comp g 
goal: { toFun := ⇑(f.comp g), map_sup' := ⋯ } = { toFun := ⇑f, map_sup' := ⋯ }.comp { toFun := ⇑g, map_sup' := ⋯ }

full_name: BoundedLatticeHom.coe_comp_inf_hom'
code: @[simp]
-- Porting note: `simp`-normal form of `coe_comp_inf_hom`
theorem coe_comp_inf_hom' (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    ⟨f ∘ g, map_inf (f.comp g)⟩ = (f : InfHom β γ).comp g 
goal: { toFun := ⇑f ∘ ⇑g, map_inf' := ⋯ } = { toFun := ⇑f, map_inf' := ⋯ }.comp { toFun := ⇑g, map_inf' := ⋯ }

full_name: BoundedLatticeHom.coe_comp_inf_hom
code: theorem coe_comp_inf_hom (f : BoundedLatticeHom β γ) (g : BoundedLatticeHom α β) :
    (f.comp g : InfHom α γ) = (f : InfHom β γ).comp g 
goal: { toFun := ⇑(f.comp g), map_inf' := ⋯ } = { toFun := ⇑f, map_inf' := ⋯ }.comp { toFun := ⇑g, map_inf' := ⋯ }

full_name: BoundedLatticeHom.comp_assoc
code: @[simp]
theorem comp_assoc (f : BoundedLatticeHom γ δ) (g : BoundedLatticeHom β γ)
    (h : BoundedLatticeHom α β) : (f.comp g).comp h = f.comp (g.comp h) 
goal: (f.comp g).comp h = f.comp (g.comp h)

full_name: BoundedLatticeHom.comp_id
code: @[simp] theorem comp_id (f : BoundedLatticeHom α β) : f.comp (BoundedLatticeHom.id α) = f 
goal: f.comp (BoundedLatticeHom.id α) = f

full_name: BoundedLatticeHom.id_comp
code: @[simp] theorem id_comp (f : BoundedLatticeHom α β) : (BoundedLatticeHom.id β).comp f = f 
goal: (BoundedLatticeHom.id β).comp f = f

full_name: BoundedLatticeHom.cancel_right
code: @[simp]
theorem cancel_right {g₁ g₂ : BoundedLatticeHom β γ} {f : BoundedLatticeHom α β}
    (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ 
goal: g₁.comp f = g₂.comp f ↔ g₁ = g₂

full_name: BoundedLatticeHom.cancel_left
code: @[simp]
theorem cancel_left {g : BoundedLatticeHom β γ} {f₁ f₂ : BoundedLatticeHom α β} (hg : Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ 
goal: g.comp f₁ = g.comp f₂ ↔ f₁ = f₂

full_name: SupHom.dual
code: /-- Reinterpret a supremum homomorphism as an infimum homomorphism between the dual lattices. -/
@[simps]
protected def dual : SupHom α β ≃ InfHom αᵒᵈ βᵒᵈ 
goal: SupHom α β ≃ InfHom αᵒᵈ βᵒᵈ

full_name: SupHom.dual_apply_toFun
code: /-- Reinterpret a supremum homomorphism as an infimum homomorphism between the dual lattices. -/
@[simps]
protected def dual : SupHom α β ≃ InfHom αᵒᵈ βᵒᵈ 
goal: (SupHom.dual f) a = f a

full_name: SupHom.dual_symm_apply_toFun
code: /-- Reinterpret a supremum homomorphism as an infimum homomorphism between the dual lattices. -/
@[simps]
protected def dual : SupHom α β ≃ InfHom αᵒᵈ βᵒᵈ 
goal: (SupHom.dual.symm f) a = f a

full_name: SupHom.dual_id
code: @[simp]
theorem dual_id : SupHom.dual (SupHom.id α) = InfHom.id _ 
goal: SupHom.dual (SupHom.id α) = InfHom.id αᵒᵈ

full_name: SupHom.dual_comp
code: @[simp]
theorem dual_comp (g : SupHom β γ) (f : SupHom α β) :
    SupHom.dual (g.comp f) = (SupHom.dual g).comp (SupHom.dual f) 
goal: SupHom.dual (g.comp f) = (SupHom.dual g).comp (SupHom.dual f)

full_name: SupHom.symm_dual_id
code: @[simp]
theorem symm_dual_id : SupHom.dual.symm (InfHom.id _) = SupHom.id α 
goal: SupHom.dual.symm (InfHom.id αᵒᵈ) = SupHom.id α

full_name: SupHom.symm_dual_comp
code: @[simp]
theorem symm_dual_comp (g : InfHom βᵒᵈ γᵒᵈ) (f : InfHom αᵒᵈ βᵒᵈ) :
    SupHom.dual.symm (g.comp f) =
      (SupHom.dual.symm g).comp (SupHom.dual.symm f) 
goal: SupHom.dual.symm (g.comp f) = (SupHom.dual.symm g).comp (SupHom.dual.symm f)

full_name: InfHom.dual_symm_apply_toFun
code: /-- Reinterpret an infimum homomorphism as a supremum homomorphism between the dual lattices. -/
@[simps]
protected def dual : InfHom α β ≃ SupHom αᵒᵈ βᵒᵈ 
goal: (InfHom.dual.symm f) a = f a

full_name: InfHom.dual_apply_toFun
code: /-- Reinterpret an infimum homomorphism as a supremum homomorphism between the dual lattices. -/
@[simps]
protected def dual : InfHom α β ≃ SupHom αᵒᵈ βᵒᵈ 
goal: (InfHom.dual f) a = f a

full_name: InfHom.dual
code: /-- Reinterpret an infimum homomorphism as a supremum homomorphism between the dual lattices. -/
@[simps]
protected def dual : InfHom α β ≃ SupHom αᵒᵈ βᵒᵈ 
goal: InfHom α β ≃ SupHom αᵒᵈ βᵒᵈ

full_name: InfHom.dual_id
code: @[simp]
theorem dual_id : InfHom.dual (InfHom.id α) = SupHom.id _ 
goal: InfHom.dual (InfHom.id α) = SupHom.id αᵒᵈ

full_name: InfHom.dual_comp
code: @[simp]
theorem dual_comp (g : InfHom β γ) (f : InfHom α β) :
    InfHom.dual (g.comp f) = (InfHom.dual g).comp (InfHom.dual f) 
goal: InfHom.dual (g.comp f) = (InfHom.dual g).comp (InfHom.dual f)

full_name: InfHom.symm_dual_id
code: @[simp]
theorem symm_dual_id : InfHom.dual.symm (SupHom.id _) = InfHom.id α 
goal: InfHom.dual.symm (SupHom.id αᵒᵈ) = InfHom.id α

full_name: InfHom.symm_dual_comp
code: @[simp]
theorem symm_dual_comp (g : SupHom βᵒᵈ γᵒᵈ) (f : SupHom αᵒᵈ βᵒᵈ) :
    InfHom.dual.symm (g.comp f) =
      (InfHom.dual.symm g).comp (InfHom.dual.symm f) 
goal: InfHom.dual.symm (g.comp f) = (InfHom.dual.symm g).comp (InfHom.dual.symm f)

full_name: SupBotHom.dual
code: /-- Reinterpret a finitary supremum homomorphism as a finitary infimum homomorphism between the dual
lattices. -/
def dual : SupBotHom α β ≃ InfTopHom αᵒᵈ βᵒᵈ 
goal: SupBotHom α β ≃ InfTopHom αᵒᵈ βᵒᵈ

full_name: SupBotHom.dual_id
code: @[simp] theorem dual_id : SupBotHom.dual (SupBotHom.id α) = InfTopHom.id _ 
goal: SupBotHom.dual (SupBotHom.id α) = InfTopHom.id αᵒᵈ

full_name: SupBotHom.dual_comp
code: @[simp]
theorem dual_comp (g : SupBotHom β γ) (f : SupBotHom α β) :
    SupBotHom.dual (g.comp f) = (SupBotHom.dual g).comp (SupBotHom.dual f) 
goal: SupBotHom.dual (g.comp f) = (SupBotHom.dual g).comp (SupBotHom.dual f)

full_name: SupBotHom.symm_dual_id
code: @[simp]
theorem symm_dual_id : SupBotHom.dual.symm (InfTopHom.id _) = SupBotHom.id α 
goal: SupBotHom.dual.symm (InfTopHom.id αᵒᵈ) = SupBotHom.id α

full_name: SupBotHom.symm_dual_comp
code: @[simp]
theorem symm_dual_comp (g : InfTopHom βᵒᵈ γᵒᵈ) (f : InfTopHom αᵒᵈ βᵒᵈ) :
    SupBotHom.dual.symm (g.comp f) =
      (SupBotHom.dual.symm g).comp (SupBotHom.dual.symm f) 
goal: SupBotHom.dual.symm (g.comp f) = (SupBotHom.dual.symm g).comp (SupBotHom.dual.symm f)

full_name: InfTopHom.dual_symm_apply_toInfHom
code: /-- Reinterpret a finitary infimum homomorphism as a finitary supremum homomorphism between the dual
lattices. -/
@[simps]
protected def dual : InfTopHom α β ≃ SupBotHom αᵒᵈ βᵒᵈ 
goal: (InfTopHom.dual.symm f).toInfHom = InfHom.dual.symm f.toSupHom

full_name: InfTopHom.dual_apply_toSupHom
code: /-- Reinterpret a finitary infimum homomorphism as a finitary supremum homomorphism between the dual
lattices. -/
@[simps]
protected def dual : InfTopHom α β ≃ SupBotHom αᵒᵈ βᵒᵈ 
goal: (InfTopHom.dual f).toSupHom = InfHom.dual f.toInfHom

full_name: InfTopHom.dual
code: /-- Reinterpret a finitary infimum homomorphism as a finitary supremum homomorphism between the dual
lattices. -/
@[simps]
protected def dual : InfTopHom α β ≃ SupBotHom αᵒᵈ βᵒᵈ 
goal: InfTopHom α β ≃ SupBotHom αᵒᵈ βᵒᵈ

full_name: InfTopHom.dual_id
code: @[simp]
theorem dual_id : InfTopHom.dual (InfTopHom.id α) = SupBotHom.id _ 
goal: InfTopHom.dual (InfTopHom.id α) = SupBotHom.id αᵒᵈ

full_name: InfTopHom.dual_comp
code: @[simp]
theorem dual_comp (g : InfTopHom β γ) (f : InfTopHom α β) :
    InfTopHom.dual (g.comp f) = (InfTopHom.dual g).comp (InfTopHom.dual f) 
goal: InfTopHom.dual (g.comp f) = (InfTopHom.dual g).comp (InfTopHom.dual f)

full_name: InfTopHom.symm_dual_id
code: @[simp]
theorem symm_dual_id : InfTopHom.dual.symm (SupBotHom.id _) = InfTopHom.id α 
goal: InfTopHom.dual.symm (SupBotHom.id αᵒᵈ) = InfTopHom.id α

full_name: InfTopHom.symm_dual_comp
code: @[simp]
theorem symm_dual_comp (g : SupBotHom βᵒᵈ γᵒᵈ) (f : SupBotHom αᵒᵈ βᵒᵈ) :
    InfTopHom.dual.symm (g.comp f) =
      (InfTopHom.dual.symm g).comp (InfTopHom.dual.symm f) 
goal: InfTopHom.dual.symm (g.comp f) = (InfTopHom.dual.symm g).comp (InfTopHom.dual.symm f)

full_name: LatticeHom.dual_apply_toSupHom
code: /-- Reinterpret a lattice homomorphism as a lattice homomorphism between the dual lattices. -/
@[simps]
protected def dual : LatticeHom α β ≃ LatticeHom αᵒᵈ βᵒᵈ 
goal: (LatticeHom.dual f).toSupHom = InfHom.dual f.toInfHom

full_name: LatticeHom.dual
code: /-- Reinterpret a lattice homomorphism as a lattice homomorphism between the dual lattices. -/
@[simps]
protected def dual : LatticeHom α β ≃ LatticeHom αᵒᵈ βᵒᵈ 
goal: LatticeHom α β ≃ LatticeHom αᵒᵈ βᵒᵈ

full_name: LatticeHom.dual_symm_apply_toSupHom
code: /-- Reinterpret a lattice homomorphism as a lattice homomorphism between the dual lattices. -/
@[simps]
protected def dual : LatticeHom α β ≃ LatticeHom αᵒᵈ βᵒᵈ 
goal: (LatticeHom.dual.symm f).toSupHom = SupHom.dual.symm f.toInfHom

full_name: LatticeHom.dual_id
code: @[simp] theorem dual_id : LatticeHom.dual (LatticeHom.id α) = LatticeHom.id _ 
goal: LatticeHom.dual (LatticeHom.id α) = LatticeHom.id αᵒᵈ

full_name: LatticeHom.dual_comp
code: @[simp]
theorem dual_comp (g : LatticeHom β γ) (f : LatticeHom α β) :
    LatticeHom.dual (g.comp f) = (LatticeHom.dual g).comp (LatticeHom.dual f) 
goal: LatticeHom.dual (g.comp f) = (LatticeHom.dual g).comp (LatticeHom.dual f)

full_name: LatticeHom.symm_dual_id
code: @[simp]
theorem symm_dual_id : LatticeHom.dual.symm (LatticeHom.id _) = LatticeHom.id α 
goal: LatticeHom.dual.symm (LatticeHom.id αᵒᵈ) = LatticeHom.id α

full_name: LatticeHom.symm_dual_comp
code: @[simp]
theorem symm_dual_comp (g : LatticeHom βᵒᵈ γᵒᵈ) (f : LatticeHom αᵒᵈ βᵒᵈ) :
    LatticeHom.dual.symm (g.comp f) =
      (LatticeHom.dual.symm g).comp (LatticeHom.dual.symm f) 
goal: LatticeHom.dual.symm (g.comp f) = (LatticeHom.dual.symm g).comp (LatticeHom.dual.symm f)

full_name: BoundedLatticeHom.dual_apply_toLatticeHom
code: /-- Reinterpret a bounded lattice homomorphism as a bounded lattice homomorphism between the dual
bounded lattices. -/
@[simps]
protected def dual : BoundedLatticeHom α β ≃ BoundedLatticeHom αᵒᵈ βᵒᵈ 
goal: (BoundedLatticeHom.dual f).toLatticeHom = LatticeHom.dual f.toLatticeHom

full_name: BoundedLatticeHom.dual_symm_apply_toLatticeHom
code: /-- Reinterpret a bounded lattice homomorphism as a bounded lattice homomorphism between the dual
bounded lattices. -/
@[simps]
protected def dual : BoundedLatticeHom α β ≃ BoundedLatticeHom αᵒᵈ βᵒᵈ 
goal: (BoundedLatticeHom.dual.symm f).toLatticeHom = LatticeHom.dual.symm f.toLatticeHom

full_name: BoundedLatticeHom.dual
code: /-- Reinterpret a bounded lattice homomorphism as a bounded lattice homomorphism between the dual
bounded lattices. -/
@[simps]
protected def dual : BoundedLatticeHom α β ≃ BoundedLatticeHom αᵒᵈ βᵒᵈ 
goal: BoundedLatticeHom α β ≃ BoundedLatticeHom αᵒᵈ βᵒᵈ

full_name: BoundedLatticeHom.dual_id
code: @[simp]
theorem dual_id : BoundedLatticeHom.dual (BoundedLatticeHom.id α) = BoundedLatticeHom.id _ 
goal: BoundedLatticeHom.dual (BoundedLatticeHom.id α) = BoundedLatticeHom.id αᵒᵈ

full_name: BoundedLatticeHom.dual_comp
code: @[simp]
theorem dual_comp (g : BoundedLatticeHom β γ) (f : BoundedLatticeHom α β) :
    BoundedLatticeHom.dual (g.comp f) =
      (BoundedLatticeHom.dual g).comp (BoundedLatticeHom.dual f) 
goal: BoundedLatticeHom.dual (g.comp f) = (BoundedLatticeHom.dual g).comp (BoundedLatticeHom.dual f)

full_name: BoundedLatticeHom.symm_dual_id
code: @[simp]
theorem symm_dual_id :
    BoundedLatticeHom.dual.symm (BoundedLatticeHom.id _) = BoundedLatticeHom.id α 
goal: BoundedLatticeHom.dual.symm (BoundedLatticeHom.id αᵒᵈ) = BoundedLatticeHom.id α

full_name: BoundedLatticeHom.symm_dual_comp
code: @[simp]
theorem symm_dual_comp (g : BoundedLatticeHom βᵒᵈ γᵒᵈ) (f : BoundedLatticeHom αᵒᵈ βᵒᵈ) :
    BoundedLatticeHom.dual.symm (g.comp f) =
      (BoundedLatticeHom.dual.symm g).comp (BoundedLatticeHom.dual.symm f) 
goal: BoundedLatticeHom.dual.symm (g.comp f) = (BoundedLatticeHom.dual.symm g).comp (BoundedLatticeHom.dual.symm f)

full_name: LatticeHom.fst
code: /-- Natural projection homomorphism from `α × β` to `α`. -/
def fst : LatticeHom (α × β) α 
goal: LatticeHom (α × β) α

full_name: LatticeHom.snd
code: /-- Natural projection homomorphism from `α × β` to `β`. -/
def snd : LatticeHom (α × β) β 
goal: LatticeHom (α × β) β

full_name: LatticeHom.coe_fst
code: @[simp, norm_cast] lemma coe_fst : ⇑(fst (α := α) (β := β)) = Prod.fst 
goal: ⇑LatticeHom.fst = Prod.fst

full_name: LatticeHom.coe_snd
code: @[simp, norm_cast] lemma coe_snd : ⇑(snd (α := α) (β := β)) = Prod.snd 
goal: ⇑LatticeHom.snd = Prod.snd

full_name: LatticeHom.fst_apply
code: lemma fst_apply (x : α × β) : fst x = x.fst 
goal: LatticeHom.fst x = x.1

full_name: LatticeHom.snd_apply
code: lemma snd_apply (x : α × β) : snd x = x.snd 
goal: LatticeHom.snd x = x.2

full_name: Pi.evalLatticeHom
code: /-- Evaluation as a lattice homomorphism. -/
def evalLatticeHom (i : ι) : LatticeHom (∀ i, α i) (α i) 
goal: LatticeHom ((i : ι) → α i) (α i)

full_name: Pi.coe_evalLatticeHom
code: @[simp, norm_cast]
lemma coe_evalLatticeHom (i : ι) : ⇑(evalLatticeHom (α := α) i) = Function.eval i 
goal: ⇑(Pi.evalLatticeHom i) = Function.eval i

full_name: Pi.evalLatticeHom_apply
code: lemma evalLatticeHom_apply (i : ι) (f : ∀ i, α i) : evalLatticeHom i f = f i 
goal: (Pi.evalLatticeHom i) f = f i

full_name: SupHom.withTop
code: /-- Adjoins a `⊤` to the domain and codomain of a `SupHom`. -/
@[simps]
protected def withTop (f : SupHom α β) : SupHom (WithTop α) (WithTop β) 
goal: SupHom (WithTop α) (WithTop β)

full_name: SupHom.withTop_toFun
code: /-- Adjoins a `⊤` to the domain and codomain of a `SupHom`. -/
@[simps]
protected def withTop (f : SupHom α β) : SupHom (WithTop α) (WithTop β) 
goal: ∀ (a : WithTop α), f.withTop a = WithTop.map (⇑f) a

full_name: SupHom.withTop_id
code: @[simp]
theorem withTop_id : (SupHom.id α).withTop = SupHom.id _ 
goal: (SupHom.id α).withTop = SupHom.id (WithTop α)

full_name: SupHom.withTop_comp
code: @[simp]
theorem withTop_comp (f : SupHom β γ) (g : SupHom α β) :
    (f.comp g).withTop = f.withTop.comp g.withTop 
goal: (f.comp g).withTop = f.withTop.comp g.withTop

full_name: SupHom.withBot_toSupHom_toFun
code: /-- Adjoins a `⊥` to the domain and codomain of a `SupHom`. -/
@[simps]
protected def withBot (f : SupHom α β) : SupBotHom (WithBot α) (WithBot β) 
goal: ∀ (a : Option α), f.withBot.toSupHom a = Option.map (⇑f) a

full_name: SupHom.withBot
code: /-- Adjoins a `⊥` to the domain and codomain of a `SupHom`. -/
@[simps]
protected def withBot (f : SupHom α β) : SupBotHom (WithBot α) (WithBot β) 
goal: SupBotHom (WithBot α) (WithBot β)

full_name: SupHom.withBot_id
code: @[simp]
theorem withBot_id : (SupHom.id α).withBot = SupBotHom.id _ 
goal: (SupHom.id α).withBot = SupBotHom.id (WithBot α)

full_name: SupHom.withBot_comp
code: @[simp]
theorem withBot_comp (f : SupHom β γ) (g : SupHom α β) :
    (f.comp g).withBot = f.withBot.comp g.withBot 
goal: (f.comp g).withBot = f.withBot.comp g.withBot

full_name: SupHom.withTop'
code: /-- Adjoins a `⊤` to the codomain of a `SupHom`. -/
@[simps]
def withTop' [OrderTop β] (f : SupHom α β) : SupHom (WithTop α) β 
goal: SupHom (WithTop α) β

full_name: SupHom.withTop'_toFun
code: /-- Adjoins a `⊤` to the codomain of a `SupHom`. -/
@[simps]
def withTop' [OrderTop β] (f : SupHom α β) : SupHom (WithTop α) β 
goal: f.withTop' a = Option.elim a ⊤ ⇑f

full_name: SupHom.withBot'_toSupHom_toFun
code: /-- Adjoins a `⊥` to the domain of a `SupHom`. -/
@[simps]
def withBot' [OrderBot β] (f : SupHom α β) : SupBotHom (WithBot α) β 
goal: f.withBot'.toSupHom a = Option.elim a ⊥ ⇑f

full_name: SupHom.withBot'
code: /-- Adjoins a `⊥` to the domain of a `SupHom`. -/
@[simps]
def withBot' [OrderBot β] (f : SupHom α β) : SupBotHom (WithBot α) β 
goal: SupBotHom (WithBot α) β

full_name: InfHom.withTop_toInfHom_toFun
code: /-- Adjoins a `⊤` to the domain and codomain of an `InfHom`. -/
@[simps]
protected def withTop (f : InfHom α β) : InfTopHom (WithTop α) (WithTop β) 
goal: ∀ (a : Option α), f.withTop.toInfHom a = Option.map (⇑f) a

full_name: InfHom.withTop
code: /-- Adjoins a `⊤` to the domain and codomain of an `InfHom`. -/
@[simps]
protected def withTop (f : InfHom α β) : InfTopHom (WithTop α) (WithTop β) 
goal: InfTopHom (WithTop α) (WithTop β)

full_name: InfHom.withTop_id
code: @[simp]
theorem withTop_id : (InfHom.id α).withTop = InfTopHom.id _ 
goal: (InfHom.id α).withTop = InfTopHom.id (WithTop α)

full_name: InfHom.withTop_comp
code: @[simp]
theorem withTop_comp (f : InfHom β γ) (g : InfHom α β) :
    (f.comp g).withTop = f.withTop.comp g.withTop 
goal: (f.comp g).withTop = f.withTop.comp g.withTop

full_name: InfHom.withBot
code: /-- Adjoins a `⊥` to the domain and codomain of an `InfHom`. -/
@[simps]
protected def withBot (f : InfHom α β) : InfHom (WithBot α) (WithBot β) 
goal: InfHom (WithBot α) (WithBot β)

full_name: InfHom.withBot_toFun
code: /-- Adjoins a `⊥` to the domain and codomain of an `InfHom`. -/
@[simps]
protected def withBot (f : InfHom α β) : InfHom (WithBot α) (WithBot β) 
goal: ∀ (a : Option α), f.withBot a = Option.map (⇑f) a

full_name: InfHom.withBot_id
code: @[simp]
theorem withBot_id : (InfHom.id α).withBot = InfHom.id _ 
goal: (InfHom.id α).withBot = InfHom.id (WithBot α)

full_name: InfHom.withBot_comp
code: @[simp]
theorem withBot_comp (f : InfHom β γ) (g : InfHom α β) :
    (f.comp g).withBot = f.withBot.comp g.withBot 
goal: (f.comp g).withBot = f.withBot.comp g.withBot

full_name: InfHom.withTop'
code: /-- Adjoins a `⊤` to the codomain of an `InfHom`. -/
@[simps]
def withTop' [OrderTop β] (f : InfHom α β) : InfTopHom (WithTop α) β 
goal: InfTopHom (WithTop α) β

full_name: InfHom.withTop'_toInfHom_toFun
code: /-- Adjoins a `⊤` to the codomain of an `InfHom`. -/
@[simps]
def withTop' [OrderTop β] (f : InfHom α β) : InfTopHom (WithTop α) β 
goal: f.withTop'.toInfHom a = Option.elim a ⊤ ⇑f

full_name: InfHom.withBot'_toFun
code: /-- Adjoins a `⊥` to the codomain of an `InfHom`. -/
@[simps]
def withBot' [OrderBot β] (f : InfHom α β) : InfHom (WithBot α) β 
goal: f.withBot' a = Option.elim a ⊥ ⇑f

full_name: InfHom.withBot'
code: /-- Adjoins a `⊥` to the codomain of an `InfHom`. -/
@[simps]
def withBot' [OrderBot β] (f : InfHom α β) : InfHom (WithBot α) β 
goal: InfHom (WithBot α) β

full_name: LatticeHom.withTop
code: /-- Adjoins a `⊤` to the domain and codomain of a `LatticeHom`. -/
@[simps]
protected def withTop (f : LatticeHom α β) : LatticeHom (WithTop α) (WithTop β) 
goal: LatticeHom (WithTop α) (WithTop β)

full_name: LatticeHom.withTop_toSupHom
code: /-- Adjoins a `⊤` to the domain and codomain of a `LatticeHom`. -/
@[simps]
protected def withTop (f : LatticeHom α β) : LatticeHom (WithTop α) (WithTop β) 
goal: f.withTop.toSupHom = f.withTop

full_name: LatticeHom.coe_withTop
code: @[simp, norm_cast]
lemma coe_withTop (f : LatticeHom α β) : ⇑f.withTop = WithTop.map f 
goal: ⇑f.withTop = WithTop.map ⇑f

full_name: LatticeHom.withTop_apply
code: lemma withTop_apply (f : LatticeHom α β) (a : WithTop α) : f.withTop a = a.map f 
goal: f.withTop a = WithTop.map (⇑f) a

full_name: LatticeHom.withTop_id
code: @[simp]
theorem withTop_id : (LatticeHom.id α).withTop = LatticeHom.id _ 
goal: (LatticeHom.id α).withTop = LatticeHom.id (WithTop α)

full_name: LatticeHom.withTop_comp
code: @[simp]
theorem withTop_comp (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g).withTop = f.withTop.comp g.withTop 
goal: (f.comp g).withTop = f.withTop.comp g.withTop

full_name: LatticeHom.withBot
code: /-- Adjoins a `⊥` to the domain and codomain of a `LatticeHom`. -/
@[simps]
protected def withBot (f : LatticeHom α β) : LatticeHom (WithBot α) (WithBot β) 
goal: LatticeHom (WithBot α) (WithBot β)

full_name: LatticeHom.withBot_toSupHom_toFun
code: /-- Adjoins a `⊥` to the domain and codomain of a `LatticeHom`. -/
@[simps]
protected def withBot (f : LatticeHom α β) : LatticeHom (WithBot α) (WithBot β) 
goal: f.withBot.toSupHom a = f.withBot a

full_name: LatticeHom.coe_withBot
code: @[simp, norm_cast]
lemma coe_withBot (f : LatticeHom α β) : ⇑f.withBot = Option.map f 
goal: ⇑f.withBot = Option.map ⇑f

full_name: LatticeHom.withBot_apply
code: lemma withBot_apply (f : LatticeHom α β) (a : WithBot α) : f.withBot a = a.map f 
goal: f.withBot a = WithBot.map (⇑f) a

full_name: LatticeHom.withBot_id
code: @[simp]
theorem withBot_id : (LatticeHom.id α).withBot = LatticeHom.id _ 
goal: (LatticeHom.id α).withBot = LatticeHom.id (WithBot α)

full_name: LatticeHom.withBot_comp
code: @[simp]
theorem withBot_comp (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g).withBot = f.withBot.comp g.withBot 
goal: (f.comp g).withBot = f.withBot.comp g.withBot

full_name: LatticeHom.withTopWithBot_toLatticeHom
code: /-- Adjoins a `⊤` and `⊥` to the domain and codomain of a `LatticeHom`. -/
@[simps]
def withTopWithBot (f : LatticeHom α β) :
    BoundedLatticeHom (WithTop <| WithBot α) (WithTop <| WithBot β) 
goal: f.withTopWithBot.toLatticeHom = f.withBot.withTop

full_name: LatticeHom.withTopWithBot
code: /-- Adjoins a `⊤` and `⊥` to the domain and codomain of a `LatticeHom`. -/
@[simps]
def withTopWithBot (f : LatticeHom α β) :
    BoundedLatticeHom (WithTop <| WithBot α) (WithTop <| WithBot β) 
goal: BoundedLatticeHom (WithTop (WithBot α)) (WithTop (WithBot β))

full_name: LatticeHom.coe_withTopWithBot
code: @[simp, norm_cast]
lemma coe_withTopWithBot (f : LatticeHom α β) : ⇑f.withTopWithBot = Option.map (Option.map f) 
goal: ⇑f.withTopWithBot = Option.map (Option.map ⇑f)

full_name: LatticeHom.withTopWithBot_apply
code: lemma withTopWithBot_apply (f : LatticeHom α β) (a : WithTop <| WithBot α) :
    f.withTopWithBot a = a.map (Option.map f) 
goal: f.withTopWithBot a = WithTop.map (Option.map ⇑f) a

full_name: LatticeHom.withTopWithBot_id
code: @[simp]
theorem withTopWithBot_id : (LatticeHom.id α).withTopWithBot = BoundedLatticeHom.id _ 
goal: (LatticeHom.id α).withTopWithBot = BoundedLatticeHom.id (WithTop (WithBot α))

full_name: LatticeHom.withTopWithBot_comp
code: @[simp]
theorem withTopWithBot_comp (f : LatticeHom β γ) (g : LatticeHom α β) :
    (f.comp g).withTopWithBot = f.withTopWithBot.comp g.withTopWithBot 
goal: (f.comp g).withTopWithBot = f.withTopWithBot.comp g.withTopWithBot

full_name: LatticeHom.withTop'
code: /-- Adjoins a `⊥` to the codomain of a `LatticeHom`. -/
@[simps]
def withTop' [OrderTop β] (f : LatticeHom α β) : LatticeHom (WithTop α) β 
goal: LatticeHom (WithTop α) β

full_name: LatticeHom.withTop'_toSupHom
code: /-- Adjoins a `⊥` to the codomain of a `LatticeHom`. -/
@[simps]
def withTop' [OrderTop β] (f : LatticeHom α β) : LatticeHom (WithTop α) β 
goal: f.withTop'.toSupHom = f.withTop'

full_name: LatticeHom.withBot'
code: /-- Adjoins a `⊥` to the domain and codomain of a `LatticeHom`. -/
@[simps]
def withBot' [OrderBot β] (f : LatticeHom α β) : LatticeHom (WithBot α) β 
goal: LatticeHom (WithBot α) β

full_name: LatticeHom.withBot'_toSupHom
code: /-- Adjoins a `⊥` to the domain and codomain of a `LatticeHom`. -/
@[simps]
def withBot' [OrderBot β] (f : LatticeHom α β) : LatticeHom (WithBot α) β 
goal: f.withBot'.toSupHom = f.withBot'.toSupHom

full_name: LatticeHom.withTopWithBot'
code: /-- Adjoins a `⊤` and `⊥` to the codomain of a `LatticeHom`. -/
@[simps]
def withTopWithBot' [BoundedOrder β] (f : LatticeHom α β) :
    BoundedLatticeHom (WithTop <| WithBot α) β 
goal: BoundedLatticeHom (WithTop (WithBot α)) β

full_name: LatticeHom.withTopWithBot'_toLatticeHom
code: /-- Adjoins a `⊤` and `⊥` to the codomain of a `LatticeHom`. -/
@[simps]
def withTopWithBot' [BoundedOrder β] (f : LatticeHom α β) :
    BoundedLatticeHom (WithTop <| WithBot α) β 
goal: f.withTopWithBot'.toLatticeHom = f.withBot'.withTop'