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

full_name: Stonean
code: /-- `Stonean` is the category of extremally disconnected compact Hausdorff spaces. -/
abbrev Stonean 
goal: Type (u_1 + 1)

full_name: CompHaus.instExtremallyDisconnectedαTopologicalSpaceToTopTrueOfProjective
code: /-- `Projective` implies `ExtremallyDisconnected`. -/
instance (X : CompHaus.{u}) [Projective X] : ExtremallyDisconnected X 
goal: ExtremallyDisconnected ↑X.toTop

full_name: CompHaus.toStonean
code: /-- `Projective` implies `Stonean`. -/
@[simps!]
def toStonean (X : CompHaus.{u}) [Projective X] :
    Stonean 
goal: Stonean

full_name: CompHaus.toStonean_toTop
code: /-- `Projective` implies `Stonean`. -/
@[simps!]
def toStonean (X : CompHaus.{u}) [Projective X] :
    Stonean 
goal: X.toStonean.toTop = X.toTop

full_name: Stonean.toCompHaus
code: /-- The (forgetful) functor from Stonean spaces to compact Hausdorff spaces. -/
abbrev toCompHaus : Stonean.{u} ⥤ CompHaus.{u} 
goal: Stonean ⥤ CompHaus

full_name: Stonean.fullyFaithfulToCompHaus
code: /-- The forgetful functor `Stonean ⥤ CompHaus` is fully faithful. -/
abbrev fullyFaithfulToCompHaus : toCompHaus.FullyFaithful  
goal: Stonean.toCompHaus.FullyFaithful

full_name: Stonean.instHasPropExtremallyDisconnectedαTopologicalSpace
code: instance  (X : Type*) [TopologicalSpace X]
    [ExtremallyDisconnected X] : HasProp (fun Y ↦ ExtremallyDisconnected Y) X 
goal: CompHausLike.HasProp (fun Y => ExtremallyDisconnected ↑Y) X

full_name: Stonean.of
code: /-- Construct a term of `Stonean` from a type endowed with the structure of a
compact, Hausdorff and extremally disconnected topological space.
-/
abbrev of (X : Type*) [TopologicalSpace X] [CompactSpace X] [T2Space X]
    [ExtremallyDisconnected X] : Stonean 
goal: Stonean

full_name: Stonean.instExtremallyDisconnectedαTopologicalSpaceToTop
code: instance (X : Stonean.{u}) : ExtremallyDisconnected X 
goal: ExtremallyDisconnected ↑X.toTop

full_name: Stonean.toProfinite
code: /-- The functor from Stonean spaces to profinite spaces. -/
abbrev toProfinite : Stonean.{u} ⥤ Profinite.{u} 
goal: Stonean ⥤ Profinite

full_name: Stonean.instExtremallyDisconnectedObjForget
code: instance (X : Stonean.{u}) : ExtremallyDisconnected ((forget _).obj X) 
goal: ExtremallyDisconnected ((CategoryTheory.forget Stonean).obj X)

full_name: Stonean.instTotallyDisconnectedSpaceObjForget
code: instance (X : Stonean.{u}) : TotallyDisconnectedSpace ((forget _).obj X) 
goal: TotallyDisconnectedSpace ((CategoryTheory.forget Stonean).obj X)

full_name: Stonean.mkFinite
code: /--
A finite discrete space as a Stonean space.
-/
def mkFinite (X : Type*) [Finite X] [TopologicalSpace X] [DiscreteTopology X] : Stonean 
goal: Stonean

full_name: Stonean.epi_iff_surjective
code: /--
A morphism in `Stonean` is an epi iff it is surjective.
-/
lemma epi_iff_surjective {X Y : Stonean} (f : X ⟶ Y) :
    Epi f ↔ Function.Surjective f 
goal: CategoryTheory.Epi f ↔ Function.Surjective ⇑f

full_name: Stonean.instProjectiveCompHausCompHaus
code: /-- Every Stonean space is projective in `CompHaus` -/
instance instProjectiveCompHausCompHaus (X : Stonean) : Projective (toCompHaus.obj X) 
goal: CategoryTheory.Projective (Stonean.toCompHaus.obj X)

full_name: Stonean.instProjectiveProfiniteObjToProfinite
code: /-- Every Stonean space is projective in `Profinite` -/
instance (X : Stonean) : Projective (toProfinite.obj X) 
goal: CategoryTheory.Projective (Stonean.toProfinite.obj X)

full_name: Stonean.instProjective
code: /-- Every Stonean space is projective in `Stonean`. -/
instance (X : Stonean) : Projective X 
goal: CategoryTheory.Projective X

full_name: CompHaus.presentation
code: /-- If `X` is compact Hausdorff, `presentation X` is a Stonean space equipped with an epimorphism
  down to `X` (see `CompHaus.presentation.π` and `CompHaus.presentation.epi_π`). It is a
  "constructive" witness to the fact that `CompHaus` has enough projectives. -/
noncomputable
def presentation (X : CompHaus) : Stonean 
goal: Stonean

full_name: CompHaus.presentation.π
code: /-- The morphism from `presentation X` to `X`. -/
noncomputable
def presentation.π (X : CompHaus) : Stonean.toCompHaus.obj X.presentation ⟶ X 
goal: Stonean.toCompHaus.obj X.presentation ⟶ X

full_name: CompHaus.presentation.epi_π
code: /-- The morphism from `presentation X` to `X` is an epimorphism. -/
noncomputable
instance presentation.epi_π (X : CompHaus) : Epi (π X) 
goal: CategoryTheory.Epi (CompHaus.presentation.π X)

full_name: Stonean.compHaus
code: /-- The underlying `CompHaus` of a `Stonean`. -/
abbrev _root_.Stonean.compHaus (X : Stonean) 
goal: CompHaus

full_name: CompHaus.lift
code: /--
```
               X
               |
              (f)
               |
               \/
  Z ---(e)---> Y
```
If `Z` is a Stonean space, `f : X ⟶ Y` an epi in `CompHaus` and `e : Z ⟶ Y` is arbitrary, then
`lift e f` is a fixed (but arbitrary) lift of `e` to a morphism `Z ⟶ X`. It exists because
`Z` is a projective object in `CompHaus`.
-/
noncomputable
def lift {X Y : CompHaus} {Z : Stonean} (e : Z.compHaus ⟶ Y) (f : X ⟶ Y) [Epi f] :
    Z.compHaus ⟶ X 
goal: Z.compHaus ⟶ X

full_name: CompHaus.lift_lifts
code: @[simp, reassoc]
lemma lift_lifts {X Y : CompHaus} {Z : Stonean} (e : Z.compHaus ⟶ Y) (f : X ⟶ Y) [Epi f] :
    lift e f ≫ f = e 
goal: CompHaus.lift e f ≫ f = e

full_name: CompHaus.Gleason
code: lemma Gleason (X : CompHaus.{u}) :
    Projective X ↔ ExtremallyDisconnected X 
goal: CategoryTheory.Projective X ↔ ExtremallyDisconnected ↑X.toTop

full_name: Profinite.presentation
code: /-- If `X` is profinite, `presentation X` is a Stonean space equipped with an epimorphism down to
    `X` (see `Profinite.presentation.π` and `Profinite.presentation.epi_π`). -/
noncomputable
def presentation (X : Profinite) : Stonean 
goal: Stonean

full_name: Profinite.presentation.π
code: /-- The morphism from `presentation X` to `X`. -/
noncomputable
def presentation.π (X : Profinite) : Stonean.toProfinite.obj X.presentation ⟶ X 
goal: Stonean.toProfinite.obj X.presentation ⟶ X

full_name: Profinite.presentation.epi_π
code: /-- The morphism from `presentation X` to `X` is an epimorphism. -/
noncomputable
instance presentation.epi_π (X : Profinite) : Epi (π X) 
goal: CategoryTheory.Epi (Profinite.presentation.π X)

full_name: Profinite.lift
code: /--
```
               X
               |
              (f)
               |
               \/
  Z ---(e)---> Y
```
If `Z` is a Stonean space, `f : X ⟶ Y` an epi in `Profinite` and `e : Z ⟶ Y` is arbitrary,
then `lift e f` is a fixed (but arbitrary) lift of `e` to a morphism `Z ⟶ X`. It is
`CompHaus.lift e f` as a morphism in `Profinite`.
-/
noncomputable
def lift {X Y : Profinite} {Z : Stonean} (e : Stonean.toProfinite.obj Z ⟶ Y) (f : X ⟶ Y) [Epi f] :
    Stonean.toProfinite.obj Z ⟶ X 
goal: Stonean.toProfinite.obj Z ⟶ X

full_name: Profinite.lift_lifts
code: @[simp, reassoc]
lemma lift_lifts {X Y : Profinite} {Z : Stonean} (e : Stonean.toProfinite.obj Z ⟶ Y) (f : X ⟶ Y)
    [Epi f] : lift e f ≫ f = e 
goal: Profinite.lift e f ≫ f = e

full_name: Profinite.projective_of_extrDisc
code: lemma projective_of_extrDisc {X : Profinite.{u}} (hX : ExtremallyDisconnected X) :
    Projective X 
goal: CategoryTheory.Projective X