File: Mathlib/Topology/Order/Hom/Esakia.lean

full_name: PseudoEpimorphism.exists_map_eq_of_map_le'
code: /-- The type of pseudo-epimorphisms, aka p-morphisms, aka bounded maps, from `α` to `β`. -/
structure PseudoEpimorphism (α β : Type*) [Preorder α] [Preorder β] extends α →o β where
  exists_map_eq_of_map_le' ⦃a : α⦄ ⦃b : β⦄ : toFun a ≤ b → ∃ c, a ≤ c ∧ toFun c = b
goal: self.toFun a ≤ b → ∃ c, a ≤ c ∧ self.toFun c = b

full_name: PseudoEpimorphism
code: /-- The type of pseudo-epimorphisms, aka p-morphisms, aka bounded maps, from `α` to `β`. -/
structure PseudoEpimorphism (α β : Type*) [Preorder α] [Preorder β] extends α →o β where
  exists_map_eq_of_map_le' ⦃a : α⦄ ⦃b : β⦄ : toFun a ≤ b → ∃ c, a ≤ c ∧ toFun c = b
goal: Type (max u_6 u_7)

full_name: EsakiaHom
code: /-- The type of Esakia morphisms, aka continuous pseudo-epimorphisms, from `α` to `β`. -/
structure EsakiaHom (α β : Type*) [TopologicalSpace α] [Preorder α] [TopologicalSpace β]
  [Preorder β] extends α →Co β where
  exists_map_eq_of_map_le' ⦃a : α⦄ ⦃b : β⦄ : toFun a ≤ b → ∃ c, a ≤ c ∧ toFun c = b
goal: Type (max u_6 u_7)

full_name: EsakiaHom.exists_map_eq_of_map_le'
code: /-- The type of Esakia morphisms, aka continuous pseudo-epimorphisms, from `α` to `β`. -/
structure EsakiaHom (α β : Type*) [TopologicalSpace α] [Preorder α] [TopologicalSpace β]
  [Preorder β] extends α →Co β where
  exists_map_eq_of_map_le' ⦃a : α⦄ ⦃b : β⦄ : toFun a ≤ b → ∃ c, a ≤ c ∧ toFun c = b
goal: self.toFun a ≤ b → ∃ c, a ≤ c ∧ self.toFun c = b

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

You should extend this class when you extend `PseudoEpimorphism`. -/
class PseudoEpimorphismClass (F : Type*) (α β : outParam Type*)
    [Preorder α] [Preorder β] [FunLike F α β]
    extends RelHomClass F ((· ≤ ·) : α → α → Prop) ((· ≤ ·) : β → β → Prop) : Prop where
  exists_map_eq_of_map_le (f : F) ⦃a : α⦄ ⦃b : β⦄ : f a ≤ b → ∃ c, a ≤ c ∧ f c = b
goal: Prop

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

You should extend this class when you extend `PseudoEpimorphism`. -/
class PseudoEpimorphismClass (F : Type*) (α β : outParam Type*)
    [Preorder α] [Preorder β] [FunLike F α β]
    extends RelHomClass F ((· ≤ ·) : α → α → Prop) ((· ≤ ·) : β → β → Prop) : Prop where
  exists_map_eq_of_map_le (f : F) ⦃a : α⦄ ⦃b : β⦄ : f a ≤ b → ∃ c, a ≤ c ∧ f c = b
goal: f a ≤ b → ∃ c, a ≤ c ∧ f c = b

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

You should extend this class when you extend `EsakiaHom`. -/
class EsakiaHomClass (F : Type*) (α β : outParam Type*) [TopologicalSpace α] [Preorder α]
    [TopologicalSpace β] [Preorder β] [FunLike F α β]
    extends ContinuousOrderHomClass F α β : Prop where
  exists_map_eq_of_map_le (f : F) ⦃a : α⦄ ⦃b : β⦄ : f a ≤ b → ∃ c, a ≤ c ∧ f c = b
goal: f a ≤ b → ∃ c, a ≤ c ∧ f c = b

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

You should extend this class when you extend `EsakiaHom`. -/
class EsakiaHomClass (F : Type*) (α β : outParam Type*) [TopologicalSpace α] [Preorder α]
    [TopologicalSpace β] [Preorder β] [FunLike F α β]
    extends ContinuousOrderHomClass F α β : Prop where
  exists_map_eq_of_map_le (f : F) ⦃a : α⦄ ⦃b : β⦄ : f a ≤ b → ∃ c, a ≤ c ∧ f c = b
goal: Prop

full_name: PseudoEpimorphismClass.toTopHomClass
code: instance (priority := 100) PseudoEpimorphismClass.toTopHomClass [PartialOrder α] [OrderTop α]
    [Preorder β] [OrderTop β] [PseudoEpimorphismClass F α β] : TopHomClass F α β 
goal: TopHomClass F α β

full_name: EsakiaHomClass.toPseudoEpimorphismClass
code: instance (priority := 100) EsakiaHomClass.toPseudoEpimorphismClass [TopologicalSpace α] [Preorder α]
    [TopologicalSpace β] [Preorder β] [EsakiaHomClass F α β] : PseudoEpimorphismClass F α β 
goal: PseudoEpimorphismClass F α β

full_name: instCoeTCPseudoEpimorphismOfPseudoEpimorphismClass
code: instance [Preorder α] [Preorder β] [PseudoEpimorphismClass F α β] :
    CoeTC F (PseudoEpimorphism α β) 
goal: CoeTC F (PseudoEpimorphism α β)

full_name: instCoeTCEsakiaHomOfEsakiaHomClass
code: instance [TopologicalSpace α] [Preorder α] [TopologicalSpace β] [Preorder β]
    [EsakiaHomClass F α β] : CoeTC F (EsakiaHom α β) 
goal: CoeTC F (EsakiaHom α β)

full_name: OrderIsoClass.toPseudoEpimorphismClass
code: instance (priority := 100) OrderIsoClass.toPseudoEpimorphismClass [Preorder α] [Preorder β]
    [EquivLike F α β] [OrderIsoClass F α β] : PseudoEpimorphismClass F α β 
goal: PseudoEpimorphismClass F α β

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

full_name: PseudoEpimorphism.instPseudoEpimorphismClass
code: instance : PseudoEpimorphismClass (PseudoEpimorphism α β) α β 
goal: PseudoEpimorphismClass (PseudoEpimorphism α β) α β

full_name: PseudoEpimorphism.toOrderHom_eq_coe
code: @[simp]
theorem toOrderHom_eq_coe (f : PseudoEpimorphism α β) : ⇑f.toOrderHom = f 
goal: ⇑f.toOrderHom = ⇑f

full_name: PseudoEpimorphism.toFun_eq_coe
code: theorem toFun_eq_coe {f : PseudoEpimorphism α β} : f.toFun = (f : α → β) 
goal: f.toFun = ⇑f

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

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

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

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

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

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

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

full_name: PseudoEpimorphism.coe_id_orderHom
code: @[simp]
theorem coe_id_orderHom : (PseudoEpimorphism.id α : α →o α) = OrderHom.id 
goal: ↑(PseudoEpimorphism.id α) = OrderHom.id

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

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

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

full_name: PseudoEpimorphism.coe_comp_orderHom
code: @[simp]
theorem coe_comp_orderHom (g : PseudoEpimorphism β γ) (f : PseudoEpimorphism α β) :
    (g.comp f : α →o γ) = (g : β →o γ).comp f 
goal: ↑(g.comp f) = (↑g).comp ↑f

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

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

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

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

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

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

full_name: EsakiaHom.toPseudoEpimorphism
code: def toPseudoEpimorphism (f : EsakiaHom α β) : PseudoEpimorphism α β 
goal: PseudoEpimorphism α β

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

full_name: EsakiaHom.instEsakiaHomClass
code: instance : EsakiaHomClass (EsakiaHom α β) α β 
goal: EsakiaHomClass (EsakiaHom α β) α β

full_name: EsakiaHom.toContinuousOrderHom_coe
code: @[simp]
theorem toContinuousOrderHom_coe {f : EsakiaHom α β} :
    f.toContinuousOrderHom = (f : α → β) 
goal: ⇑f.toContinuousOrderHom = ⇑f

full_name: EsakiaHom.toFun_eq_coe
code: theorem toFun_eq_coe {f : EsakiaHom α β} : f.toFun = (f : α → β) 
goal: f.toFun = ⇑f

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

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

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

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

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

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

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

full_name: EsakiaHom.coe_id_pseudoEpimorphism
code: @[simp]
theorem coe_id_pseudoEpimorphism :
    (EsakiaHom.id α : PseudoEpimorphism α α) = PseudoEpimorphism.id α 
goal: { toOrderHom := ↑(EsakiaHom.id α), exists_map_eq_of_map_le' := ⋯ } = PseudoEpimorphism.id α

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

full_name: EsakiaHom.coe_id_continuousOrderHom
code: @[simp]
theorem coe_id_continuousOrderHom : (EsakiaHom.id α : α →Co α) = ContinuousOrderHom.id α 
goal: ↑(EsakiaHom.id α) = ContinuousOrderHom.id α

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

full_name: EsakiaHom.coe_comp_continuousOrderHom
code: @[simp]
theorem coe_comp_continuousOrderHom (g : EsakiaHom β γ) (f : EsakiaHom α β) :
    (g.comp f : α →Co γ) = (g : β →Co γ).comp f 
goal: ↑(g.comp f) = (↑g).comp ↑f

full_name: EsakiaHom.coe_comp_pseudoEpimorphism
code: @[simp]
theorem coe_comp_pseudoEpimorphism (g : EsakiaHom β γ) (f : EsakiaHom α β) :
    (g.comp f : PseudoEpimorphism α γ) = (g : PseudoEpimorphism β γ).comp f 
goal: { toOrderHom := ↑(g.comp f), exists_map_eq_of_map_le' := ⋯ } =
  { toOrderHom := ↑g, exists_map_eq_of_map_le' := ⋯ }.comp { toOrderHom := ↑f, exists_map_eq_of_map_le' := ⋯ }

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

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

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

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

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

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

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