|
| 1 | +/- |
| 2 | +Copyright (c) 2023 Adam Topaz. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Adam Topaz |
| 5 | +-/ |
| 6 | +import Mathlib.Topology.ExtremallyDisconnected |
| 7 | +import Mathlib.CategoryTheory.Sites.Coherent |
| 8 | +import Mathlib.Topology.Category.CompHaus.Projective |
| 9 | +import Mathlib.Topology.Category.Profinite.Basic |
| 10 | +/-! |
| 11 | +# Extremally disconnected sets |
| 12 | +
|
| 13 | +This file develops some of the basic theory of extremally disconnected sets. |
| 14 | +
|
| 15 | +## Overview |
| 16 | +
|
| 17 | +This file defines the type `Stonean` of all extremally (note: not "extremely"!) |
| 18 | +disconnected compact Hausdorff spaces, gives it the structure of a large category, |
| 19 | +and proves some basic observations about this category and various functors from it. |
| 20 | +
|
| 21 | +The Lean implementation: a term of type `Stonean` is a pair, considering of |
| 22 | +a term of type `CompHaus` (i.e. a compact Hausdorff topological space) plus |
| 23 | +a proof that the space is extremally disconnected. |
| 24 | +This is equivalent to the assertion that the term is projective in `CompHaus`, |
| 25 | +in the sense of category theory (i.e., such that morphisms out of the object |
| 26 | +can be lifted along epimorphisms). |
| 27 | +
|
| 28 | +## Main definitions |
| 29 | +
|
| 30 | +* `Stonean` : the category of extremally disconnected compact Hausdorff spaces. |
| 31 | +* `Stonean.toCompHaus` : the forgetful functor `Stonean ⥤ CompHaus` from Stonean |
| 32 | + spaces to compact Hausdorff spaces |
| 33 | +* `Stonean.toProfinite` : the functor from Stonean spaces to profinite spaces. |
| 34 | +
|
| 35 | +-/ |
| 36 | +universe u |
| 37 | + |
| 38 | +open CategoryTheory |
| 39 | + |
| 40 | +/-- `Stonean` is the category of extremally disconnected compact Hausdorff spaces. -/ |
| 41 | +structure Stonean where |
| 42 | + /-- The underlying compact Hausdorff space of a Stonean space. -/ |
| 43 | + compHaus : CompHaus.{u} |
| 44 | + /-- A Stonean space is extremally disconnected -/ |
| 45 | + [extrDisc : ExtremallyDisconnected compHaus] |
| 46 | + |
| 47 | +namespace CompHaus |
| 48 | + |
| 49 | +/-- `Projective` implies `ExtremallyDisconnected`. -/ |
| 50 | +instance (X : CompHaus.{u}) [Projective X] : ExtremallyDisconnected X := by |
| 51 | + apply CompactT2.Projective.extremallyDisconnected |
| 52 | + intro A B _ _ _ _ _ _ f g hf hg hsurj |
| 53 | + have : CompactSpace (TopCat.of A) := by assumption |
| 54 | + have : T2Space (TopCat.of A) := by assumption |
| 55 | + have : CompactSpace (TopCat.of B) := by assumption |
| 56 | + have : T2Space (TopCat.of B) := by assumption |
| 57 | + let A' : CompHaus := ⟨TopCat.of A⟩ |
| 58 | + let B' : CompHaus := ⟨TopCat.of B⟩ |
| 59 | + let f' : X ⟶ B' := ⟨f, hf⟩ |
| 60 | + let g' : A' ⟶ B' := ⟨g,hg⟩ |
| 61 | + have : Epi g' := by |
| 62 | + rw [CompHaus.epi_iff_surjective] |
| 63 | + assumption |
| 64 | + obtain ⟨h,hh⟩ := Projective.factors f' g' |
| 65 | + refine ⟨h,h.2,?_⟩ |
| 66 | + ext t |
| 67 | + apply_fun (fun e => e t) at hh |
| 68 | + exact hh |
| 69 | + |
| 70 | +/-- `Projective` implies `Stonean`. -/ |
| 71 | +@[simps!] |
| 72 | +def toStonean (X : CompHaus.{u}) [Projective X] : |
| 73 | + Stonean where |
| 74 | + compHaus := X |
| 75 | + |
| 76 | +end CompHaus |
| 77 | + |
| 78 | +namespace Stonean |
| 79 | + |
| 80 | +/-- Stonean spaces form a large category. -/ |
| 81 | +instance : LargeCategory Stonean.{u} := |
| 82 | + show Category (InducedCategory CompHaus (·.compHaus)) from inferInstance |
| 83 | + |
| 84 | +/-- The (forgetful) functor from Stonean spaces to compact Hausdorff spaces. -/ |
| 85 | +@[simps!] |
| 86 | +def toCompHaus : Stonean.{u} ⥤ CompHaus.{u} := |
| 87 | + inducedFunctor _ |
| 88 | + |
| 89 | +/-- Construct a term of `Stonean` from a type endowed with the structure of a |
| 90 | +compact, Hausdorff and extremally disconnected topological space. |
| 91 | +-/ |
| 92 | +def of (X : Type _) [TopologicalSpace X] [CompactSpace X] [T2Space X] |
| 93 | + [ExtremallyDisconnected X] : Stonean := |
| 94 | + ⟨⟨⟨X, inferInstance⟩⟩⟩ |
| 95 | + |
| 96 | +/-- The forgetful functor `Stonean ⥤ CompHaus` is full. -/ |
| 97 | +instance : Full toCompHaus where |
| 98 | + preimage := fun f => f |
| 99 | + |
| 100 | + |
| 101 | +/-- The forgetful functor `Stonean ⥤ CompHaus` is faithful. -/ |
| 102 | +instance : Faithful toCompHaus := {} |
| 103 | + |
| 104 | +/-- Stonean spaces are a concrete category. -/ |
| 105 | +instance : ConcreteCategory Stonean where |
| 106 | + forget := toCompHaus ⋙ forget _ |
| 107 | + |
| 108 | +instance : CoeSort Stonean.{u} (Type u) := ConcreteCategory.hasCoeToSort _ |
| 109 | +instance {X Y : Stonean.{u}} : FunLike (X ⟶ Y) X (fun _ => Y) := ConcreteCategory.funLike |
| 110 | + |
| 111 | +/-- Stonean spaces are topological spaces. -/ |
| 112 | +instance instTopologicalSpace (X : Stonean.{u}) : TopologicalSpace X := |
| 113 | + show TopologicalSpace X.compHaus from inferInstance |
| 114 | + |
| 115 | +/-- Stonean spaces are compact. -/ |
| 116 | +instance (X : Stonean.{u}) : CompactSpace X := |
| 117 | + show CompactSpace X.compHaus from inferInstance |
| 118 | + |
| 119 | +/-- Stonean spaces are Hausdorff. -/ |
| 120 | +instance (X : Stonean.{u}) : T2Space X := |
| 121 | + show T2Space X.compHaus from inferInstance |
| 122 | + |
| 123 | +instance (X : Stonean.{u}) : ExtremallyDisconnected X := |
| 124 | + X.2 |
| 125 | + |
| 126 | +/-- The functor from Stonean spaces to profinite spaces. -/ |
| 127 | +@[simps] |
| 128 | +def toProfinite : Stonean.{u} ⥤ Profinite.{u} where |
| 129 | + obj X := |
| 130 | + { toCompHaus := X.compHaus, |
| 131 | + IsTotallyDisconnected := show TotallyDisconnectedSpace X from inferInstance } |
| 132 | + map f := f |
| 133 | + |
| 134 | +/-- The functor from Stonean spaces to profinite spaces is full. -/ |
| 135 | +instance : Full toProfinite where |
| 136 | + preimage f := f |
| 137 | + |
| 138 | +/-- The functor from Stonean spaces to profinite spaces is faithful. -/ |
| 139 | +instance : Faithful toProfinite := {} |
| 140 | + |
| 141 | +/-- The functor from Stonean spaces to compact Hausdorff spaces |
| 142 | + factors through profinite spaces. -/ |
| 143 | +example : toProfinite ⋙ profiniteToCompHaus = toCompHaus := |
| 144 | + rfl |
| 145 | + |
| 146 | +end Stonean |
0 commit comments