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

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

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

full_name: Stonean.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 : Stonean.{u}} (e : (a : α) → (X a ⟶ B)) :
    finiteCoproduct X ⟶ B 
goal: Stonean.finiteCoproduct X ⟶ B

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

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

full_name: Stonean.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: Stonean.finiteCoproduct.isColimit
code: /-- The explicit finite coproduct cocone is a colimit cocone. -/
def finiteCoproduct.isColimit : Limits.IsColimit (finiteCoproduct.cofan X) 
goal: CategoryTheory.Limits.IsColimit (Stonean.finiteCoproduct.cofan X)

full_name: Stonean.instHasColimitDiscreteFinFunctorCompObjMk
code: instance (n : ℕ) (F : Discrete (Fin n) ⥤ Stonean) :
    HasColimit (Discrete.functor (F.obj ∘ Discrete.mk) : Discrete (Fin n) ⥤ Stonean) 
goal: CategoryTheory.Limits.HasColimit (CategoryTheory.Discrete.functor (F.obj ∘ CategoryTheory.Discrete.mk))

full_name: Stonean.instHasFiniteCoproducts
code: instance : HasFiniteCoproducts Stonean 
goal: CategoryTheory.Limits.HasFiniteCoproducts Stonean

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

full_name: Stonean.finiteCoproduct.openEmbedding_ι
code: /-- The inclusion maps into the explicit finite coproduct are open embeddings. -/
lemma finiteCoproduct.openEmbedding_ι {α : Type} [Finite α] (Z : α → Stonean.{u}) (a : α) :
    OpenEmbedding (finiteCoproduct.ι Z a) 
goal: OpenEmbedding ⇑(Stonean.finiteCoproduct.ι Z a)

full_name: Stonean.Sigma.openEmbedding_ι
code: /-- The inclusion maps into the abstract finite coproduct are open embeddings. -/
lemma Sigma.openEmbedding_ι {α : Type} [Finite α] (Z : α → Stonean.{u}) (a : α) :
    OpenEmbedding (Sigma.ι Z a) 
goal: OpenEmbedding ⇑(CategoryTheory.Limits.Sigma.ι Z a)

full_name: Stonean.instPreservesFiniteCoproductsCompHausToCompHaus
code: instance : PreservesFiniteCoproducts Stonean.toCompHaus 
goal: CategoryTheory.Limits.PreservesFiniteCoproducts Stonean.toCompHaus

full_name: Stonean.instPreservesFiniteCoproductsProfiniteToProfinite
code: instance : PreservesFiniteCoproducts Stonean.toProfinite 
goal: CategoryTheory.Limits.PreservesFiniteCoproducts Stonean.toProfinite

full_name: Stonean.pullback
code: /--
The pullback of a morphism `f` and an open embedding `i` in `Stonean`, constructed explicitly as
the preimage under `f`of the image of `i` with the subspace topology.
-/
def pullback : Stonean 
goal: Stonean

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

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

full_name: Stonean.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 {X Y Z W : Stonean} (f : X ⟶ Z) {i : Y ⟶ Z} (hi : OpenEmbedding i)
    (a : W ⟶ X) (b : W ⟶ Y) (w : a ≫ f = b ≫ i) :
    W ⟶ pullback f hi 
goal: W ⟶ Stonean.pullback f hi

full_name: Stonean.pullback.condition
code: lemma pullback.condition {X Y Z : Stonean.{u}} (f : X ⟶ Z) {i : Y ⟶ Z}
    (hi : OpenEmbedding i) : pullback.fst f hi ≫ f = pullback.snd f hi ≫ i 
goal: Stonean.pullback.fst f hi ≫ f = Stonean.pullback.snd f hi ≫ i

full_name: Stonean.pullback.lift_fst
code: @[reassoc (attr := simp)]
lemma pullback.lift_fst {W : Stonean} (a : W ⟶ X) (b : W ⟶ Y) (w : a ≫ f = b ≫ i) :
    pullback.lift f hi a b w ≫ pullback.fst f hi = a 
goal: Stonean.pullback.lift f hi a b w ≫ Stonean.pullback.fst f hi = a

full_name: Stonean.pullback.lift_snd
code: @[reassoc (attr := simp)]
lemma pullback.lift_snd {X Y Z W : Stonean} (f : X ⟶ Z) {i : Y ⟶ Z} (hi : OpenEmbedding i)
    (a : W ⟶ X) (b : W ⟶ Y) (w : a ≫ f = b ≫ i) :
    pullback.lift f hi a b w ≫ Stonean.pullback.snd f hi = b 
goal: Stonean.pullback.lift f hi a b w ≫ Stonean.pullback.snd f hi = b

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

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

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

full_name: Stonean.pullback.hom_ext
code: lemma pullback.hom_ext {X Y Z W : Stonean} (f : X ⟶ Z) {i : Y ⟶ Z} (hi : OpenEmbedding i)
    (a : W ⟶ (pullback.cone f hi).pt) (b : W ⟶ (pullback.cone f hi).pt)
    (hfst : a ≫ pullback.fst f hi = b ≫ pullback.fst f hi) : a = b 
goal: a = b

full_name: Stonean.pullback.isLimit
code: /-- The explicit pullback cone is a limit cone. -/
def pullback.isLimit : IsLimit (pullback.cone f hi) 
goal: CategoryTheory.Limits.IsLimit (Stonean.pullback.cone f hi)

full_name: Stonean.HasPullbackOpenEmbedding
code: lemma HasPullbackOpenEmbedding : HasPullback f i 
goal: CategoryTheory.Limits.HasPullback f i

full_name: Stonean.pullbackIsoPullback
code: /-- The isomorphism from the explicit pullback to the abstract pullback. -/
@[simps]
noncomputable
def pullbackIsoPullback : Stonean.pullback f hi ≅
    @Limits.pullback _ _ _ _ _ f i (HasPullbackOpenEmbedding f hi) 
goal: Stonean.pullback f hi ≅ CategoryTheory.Limits.pullback f i

full_name: Stonean.pullbackIsoPullback_hom
code: /-- The isomorphism from the explicit pullback to the abstract pullback. -/
@[simps]
noncomputable
def pullbackIsoPullback : Stonean.pullback f hi ≅
    @Limits.pullback _ _ _ _ _ f i (HasPullbackOpenEmbedding f hi) 
goal: (Stonean.pullbackIsoPullback f hi).hom =
  CategoryTheory.Limits.pullback.lift (Stonean.pullback.fst f hi) (Stonean.pullback.snd f hi) ⋯

full_name: Stonean.pullbackIsoPullback_inv
code: /-- The isomorphism from the explicit pullback to the abstract pullback. -/
@[simps]
noncomputable
def pullbackIsoPullback : Stonean.pullback f hi ≅
    @Limits.pullback _ _ _ _ _ f i (HasPullbackOpenEmbedding f hi) 
goal: (Stonean.pullbackIsoPullback f hi).inv =
  Stonean.pullback.lift f hi (CategoryTheory.Limits.pullback.fst f i) (CategoryTheory.Limits.pullback.snd f i) ⋯

full_name: Stonean.createsPullbacksOfOpenEmbedding
code: /-- The forgetful from `Stonean` to `TopCat` creates pullbacks along open embeddings -/
noncomputable
def createsPullbacksOfOpenEmbedding :
    CreatesLimit (cospan f i) (Stonean.toCompHaus ⋙ compHausToTop) 
goal: CategoryTheory.CreatesLimit (CategoryTheory.Limits.cospan f i) (Stonean.toCompHaus ⋙ compHausToTop)

full_name: Stonean.instHasPullbacksOfInclusions
code: instance : HasPullbacksOfInclusions Stonean 
goal: CategoryTheory.HasPullbacksOfInclusions Stonean

full_name: Stonean.instPreservesPullbacksOfInclusionsCompHausToCompHaus
code: noncomputable
instance : PreservesPullbacksOfInclusions Stonean.toCompHaus.{u} 
goal: CategoryTheory.PreservesPullbacksOfInclusions Stonean.toCompHaus

full_name: Stonean.instPreservesPullbacksOfInclusionsProfiniteToProfinite
code: noncomputable
instance : PreservesPullbacksOfInclusions Stonean.toProfinite.{u} 
goal: CategoryTheory.PreservesPullbacksOfInclusions Stonean.toProfinite

full_name: Stonean.instFinitaryExtensive
code: instance : FinitaryExtensive Stonean.{u} 
goal: CategoryTheory.FinitaryExtensive Stonean