File: Mathlib/Topology/Category/CompHaus/Limits.lean

full_name: CompHaus.pullback
code: /--
The pullback of two morphisms `f,g` in `CompHaus`, constructed explicitly as the set of
pairs `(x,y)` such that `f x = g y`, with the topology induced by the product.
-/
def pullback : CompHaus.{u} 
goal: CompHaus

full_name: CompHaus.pullback.fst
code: /--
The projection from the pullback to the first component.
-/
def pullback.fst : pullback f g ⟶ X 
goal: CompHaus.pullback f g ⟶ X

full_name: CompHaus.pullback.snd
code: /--
The projection from the pullback to the second component.
-/
def pullback.snd : pullback f g ⟶ Y 
goal: CompHaus.pullback f g ⟶ Y

full_name: CompHaus.pullback.condition
code: @[reassoc]
lemma pullback.condition : pullback.fst f g ≫ f = pullback.snd f g ≫ g 
goal: CategoryTheory.CategoryStruct.comp (CompHaus.pullback.fst f g) f =
  CategoryTheory.CategoryStruct.comp (CompHaus.pullback.snd f g) g

full_name: CompHaus.pullback.lift
code: /--
Construct a morphism to the explicit pullback given morphisms to the factors
which are compatible with the maps to the base.
This is essentially the universal property of the pullback.
-/
def pullback.lift {Z : CompHaus.{u}} (a : Z ⟶ X) (b : Z ⟶ Y) (w : a ≫ f = b ≫ g) :
    Z ⟶ pullback f g 
goal: Z ⟶ CompHaus.pullback f g

full_name: CompHaus.pullback.lift_fst
code: @[reassoc (attr := simp)]
lemma pullback.lift_fst {Z : CompHaus.{u}} (a : Z ⟶ X) (b : Z ⟶ Y) (w : a ≫ f = b ≫ g) :
    pullback.lift f g a b w ≫ pullback.fst f g = a 
goal: CategoryTheory.CategoryStruct.comp (CompHaus.pullback.lift f g a b w) (CompHaus.pullback.fst f g) = a

full_name: CompHaus.pullback.lift_snd
code: @[reassoc (attr := simp)]
lemma pullback.lift_snd {Z : CompHaus.{u}} (a : Z ⟶ X) (b : Z ⟶ Y) (w : a ≫ f = b ≫ g) :
    pullback.lift f g a b w ≫ pullback.snd f g = b 
goal: CategoryTheory.CategoryStruct.comp (CompHaus.pullback.lift f g a b w) (CompHaus.pullback.snd f g) = b

full_name: CompHaus.pullback.hom_ext
code: lemma pullback.hom_ext {Z : CompHaus.{u}} (a b : Z ⟶ pullback f g)
    (hfst : a ≫ pullback.fst f g = b ≫ pullback.fst f g)
    (hsnd : a ≫ pullback.snd f g = b ≫ pullback.snd f g) : a = b 
goal: a = b

full_name: CompHaus.pullback.cone
code: /--
The pullback cone whose cone point is the explicit pullback.
-/
@[simps! pt π]
def pullback.cone : Limits.PullbackCone f g 
goal: CategoryTheory.Limits.PullbackCone f g

full_name: CompHaus.pullback.cone_π
code: /--
The pullback cone whose cone point is the explicit pullback.
-/
@[simps! pt π]
def pullback.cone : Limits.PullbackCone f g 
goal: (CompHaus.pullback.cone f g).π =
  {
    app := fun j =>
      Option.rec (CategoryTheory.CategoryStruct.comp (CompHaus.pullback.fst f g) f)
        (fun val => CategoryTheory.Limits.WalkingPair.rec (CompHaus.pullback.fst f g) (CompHaus.pullback.snd f g) val)
        j,
    naturality := ⋯ }

full_name: CompHaus.pullback.cone_pt
code: /--
The pullback cone whose cone point is the explicit pullback.
-/
@[simps! pt π]
def pullback.cone : Limits.PullbackCone f g 
goal: (CompHaus.pullback.cone f g).pt = CompHaus.pullback f g

full_name: CompHaus.pullback.isLimit_lift
code: /--
The explicit pullback cone is a limit cone.
-/
@[simps! lift]
def pullback.isLimit : Limits.IsLimit (pullback.cone f g) 
goal: (CompHaus.pullback.isLimit f g).lift s = CompHaus.pullback.lift f g s.fst s.snd ⋯

full_name: CompHaus.pullback.isLimit
code: /--
The explicit pullback cone is a limit cone.
-/
@[simps! lift]
def pullback.isLimit : Limits.IsLimit (pullback.cone f g) 
goal: CategoryTheory.Limits.IsLimit (CompHaus.pullback.cone f g)

full_name: CompHaus.pullbackIsoPullback
code: /-- The isomorphism from the explicit pullback to the abstract pullback. -/
noncomputable
def pullbackIsoPullback : CompHaus.pullback f g ≅ Limits.pullback f g 
goal: CompHaus.pullback f g ≅ CategoryTheory.Limits.pullback f g

full_name: CompHaus.pullbackHomeoPullback
code: /-- The homeomorphism from the explicit pullback to the abstract pullback. -/
noncomputable
def pullbackHomeoPullback : (CompHaus.pullback f g).toTop ≃ₜ (Limits.pullback f g).toTop 
goal: ↑(CompHaus.pullback f g).toTop ≃ₜ ↑(CategoryTheory.Limits.pullback f g).toTop

full_name: CompHaus.pullback_fst_eq
code: theorem pullback_fst_eq :
    CompHaus.pullback.fst f g = (pullbackIsoPullback f g).hom ≫ Limits.pullback.fst f g 
goal: CompHaus.pullback.fst f g =
  CategoryTheory.CategoryStruct.comp (CompHaus.pullbackIsoPullback f g).hom (CategoryTheory.Limits.pullback.fst f g)

full_name: CompHaus.pullback_snd_eq
code: theorem pullback_snd_eq :
    CompHaus.pullback.snd f g = (pullbackIsoPullback f g).hom ≫ Limits.pullback.snd f g 
goal: CompHaus.pullback.snd f g =
  CategoryTheory.CategoryStruct.comp (CompHaus.pullbackIsoPullback f g).hom (CategoryTheory.Limits.pullback.snd f g)

full_name: CompHaus.finiteCoproduct
code: /--
The coproduct of a finite family of objects in `CompHaus`, constructed as the disjoint
union with its usual topology.
-/
def finiteCoproduct : CompHaus 
goal: CompHaus

full_name: CompHaus.finiteCoproduct.ι
code: /--
The inclusion of one of the factors into the explicit finite coproduct.
-/
def finiteCoproduct.ι (a : α) : X a ⟶ finiteCoproduct X 
goal: X a ⟶ CompHaus.finiteCoproduct X

full_name: CompHaus.finiteCoproduct.desc
code: /--
To construct a morphism from the explicit finite coproduct, it suffices to
specify a morphism from each of its factors.
This is essentially the universal property of the coproduct.
-/
def finiteCoproduct.desc {B : CompHaus} (e : (a : α) → (X a ⟶ B)) :
    finiteCoproduct X ⟶ B 
goal: CompHaus.finiteCoproduct X ⟶ B

full_name: CompHaus.finiteCoproduct.ι_desc
code: @[reassoc (attr := simp)]
lemma finiteCoproduct.ι_desc {B : CompHaus} (e : (a : α) → (X a ⟶ B)) (a : α) :
    finiteCoproduct.ι X a ≫ finiteCoproduct.desc X e = e a 
goal: CategoryTheory.CategoryStruct.comp (CompHaus.finiteCoproduct.ι X a) (CompHaus.finiteCoproduct.desc X e) = e a

full_name: CompHaus.finiteCoproduct.hom_ext
code: lemma finiteCoproduct.hom_ext {B : CompHaus} (f g : finiteCoproduct X ⟶ B)
    (h : ∀ a : α, finiteCoproduct.ι X a ≫ f = finiteCoproduct.ι X a ≫ g) : f = g 
goal: f = g

full_name: CompHaus.finiteCoproduct.cofan
code: /-- The coproduct cocone associated to the explicit finite coproduct. -/
abbrev finiteCoproduct.cofan : Limits.Cofan X 
goal: CategoryTheory.Limits.Cofan X

full_name: CompHaus.finiteCoproduct.isColimit
code: /-- The explicit finite coproduct cocone is a colimit cocone. -/
def finiteCoproduct.isColimit : Limits.IsColimit (finiteCoproduct.cofan X) 
goal: CategoryTheory.Limits.IsColimit (CompHaus.finiteCoproduct.cofan X)

full_name: CompHaus.coproductIsoCoproduct
code: /-- The isomorphism from the explicit finite coproducts to the abstract coproduct. -/
noncomputable
def coproductIsoCoproduct : finiteCoproduct X ≅ ∐ X 
goal: CompHaus.finiteCoproduct X ≅ ∐ X

full_name: CompHaus.Sigma.ι_comp_toFiniteCoproduct
code: theorem Sigma.ι_comp_toFiniteCoproduct (a : α) :
    (Limits.Sigma.ι X a) ≫ (coproductIsoCoproduct X).inv = finiteCoproduct.ι X a 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.Sigma.ι X a) (CompHaus.coproductIsoCoproduct X).inv =
  CompHaus.finiteCoproduct.ι X a

full_name: CompHaus.coproductHomeoCoproduct
code: /-- The homeomorphism from the explicit finite coproducts to the abstract coproduct. -/
noncomputable
def coproductHomeoCoproduct : finiteCoproduct X ≃ₜ (∐ X : _) 
goal: ↑(CompHaus.finiteCoproduct X).toTop ≃ₜ ↑(∐ X).toTop

full_name: CompHaus.finiteCoproduct.ι_injective
code: lemma finiteCoproduct.ι_injective (a : α) : Function.Injective (finiteCoproduct.ι X a) 
goal: Function.Injective ⇑(CompHaus.finiteCoproduct.ι X a)

full_name: CompHaus.finiteCoproduct.ι_jointly_surjective
code: lemma finiteCoproduct.ι_jointly_surjective (R : finiteCoproduct X) :
    ∃ (a : α) (r : X a), R = finiteCoproduct.ι X a r 
goal: ∃ a r, R = (CompHaus.finiteCoproduct.ι X a) r

full_name: CompHaus.finiteCoproduct.ι_desc_apply
code: lemma finiteCoproduct.ι_desc_apply {B : CompHaus} {π : (a : α) → X a ⟶ B} (a : α) :
    ∀ x, finiteCoproduct.desc X π (finiteCoproduct.ι X a x) = π a x 
goal: (CompHaus.finiteCoproduct.desc X π) ((CompHaus.finiteCoproduct.ι X a) x) = (π a) x

full_name: CompHaus.instPreservesFiniteCoproductsTopCatCompHausToTop
code: instance : PreservesFiniteCoproducts compHausToTop 
goal: CategoryTheory.Limits.PreservesFiniteCoproducts compHausToTop

full_name: CompHaus.instFinitaryExtensive
code: instance : FinitaryExtensive CompHaus 
goal: CategoryTheory.FinitaryExtensive CompHaus

full_name: CompHaus.isTerminalPUnit
code: /-- A one-element space is terminal in `CompHaus` -/
def isTerminalPUnit : IsTerminal (CompHaus.of PUnit.{u + 1}) 
goal: CategoryTheory.Limits.IsTerminal (CompHaus.of PUnit.{u + 1})

full_name: CompHaus.terminalIsoPUnit
code: /-- The isomorphism from an arbitrary terminal object of `CompHaus` to a one-element space. -/
noncomputable def terminalIsoPUnit : ⊤_ CompHaus.{u} ≅ CompHaus.of PUnit 
goal: ⊤_ CompHaus ≅ CompHaus.of PUnit.{u + 1}