Skip to content

Commit

Permalink
feat: The forgetful functor on Stonean has a left adjoint given by …
Browse files Browse the repository at this point in the history
…Stone-Cech compactification (#6826)
  • Loading branch information
dagurtomas committed Sep 6, 2023
1 parent b1be421 commit a010997
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -3251,6 +3251,7 @@ import Mathlib.Topology.Category.Profinite.CofilteredLimit
import Mathlib.Topology.Category.Profinite.EffectiveEpi
import Mathlib.Topology.Category.Profinite.Limits
import Mathlib.Topology.Category.Profinite.Projective
import Mathlib.Topology.Category.Stonean.Adjunctions
import Mathlib.Topology.Category.Stonean.Basic
import Mathlib.Topology.Category.Stonean.EffectiveEpi
import Mathlib.Topology.Category.Stonean.Limits
Expand Down
61 changes: 61 additions & 0 deletions Mathlib/Topology/Category/Stonean/Adjunctions.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/-
Copyright (c) 2023 Dagur Asgeirsson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Dagur Asgeirsson
-/
import Mathlib.Topology.Category.Stonean.Basic
import Mathlib.Topology.Category.TopCat.Adjunctions
import Mathlib.Topology.StoneCech

/-!
# Adjunctions involving the category of Stonean spaces
This file constructs the left adjoint `typeToStonean` to the forgetful functor from Stonean spaces
to sets, using the Stone-Cech compactification. This allows to conclude that the monomorphisms in
`Stonean` are precisely the injective maps (see `Stonean.mono_iff_injective`).
-/

universe u

open CategoryTheory Adjunction

namespace Stonean

/-- The object part of the compactification functor from types to Stonean spaces. -/
def stoneCechObj (X : Type u) : Stonean :=
letI : TopologicalSpace X := ⊥
haveI : DiscreteTopology X := ⟨rfl⟩
haveI : ExtremallyDisconnected (StoneCech X) :=
CompactT2.Projective.extremallyDisconnected StoneCech.projective
of (StoneCech X)

/-- The equivalence of homsets to establish the adjunction between the Stone-Cech compactification
functor and the forgetful functor. -/
noncomputable def stoneCechEquivalence (X : Type u) (Y : Stonean.{u}) :
(stoneCechObj X ⟶ Y) ≃ (X ⟶ (forget Stonean).obj Y) := by
letI : TopologicalSpace X := ⊥
haveI : DiscreteTopology X := ⟨rfl⟩
refine (equivOfFullyFaithful toCompHaus).trans ?_
exact (_root_.stoneCechEquivalence (TopCat.of X) (toCompHaus.obj Y)).trans
(TopCat.adj₁.homEquiv _ _)

end Stonean

/-- The Stone-Cech compactification functor from types to Stonean spaces. -/
noncomputable def typeToStonean : Type u ⥤ Stonean.{u} :=
leftAdjointOfEquiv Stonean.stoneCechEquivalence fun _ _ _ _ _ => rfl

namespace Stonean

/-- The Stone-Cech compactification functor is left adjoint to the forgetful functor. -/
noncomputable def stoneCechAdjunction : typeToStonean ⊣ (forget Stonean) :=
adjunctionOfEquivLeft stoneCechEquivalence fun _ _ _ _ _ => rfl

/-- The forgetful functor from Stonean spaces, being a right adjoint, preserves limits. -/
noncomputable instance forget.preservesLimits : Limits.PreservesLimits (forget Stonean) :=
rightAdjointPreservesLimits stoneCechAdjunction

theorem mono_iff_injective {X Y : Stonean} (f : X ⟶ Y) : Mono f ↔ Function.Injective f :=
ConcreteCategory.mono_iff_injective_of_preservesPullback f

end Stonean

0 comments on commit a010997

Please sign in to comment.