Compacta and Compact Hausdorff Spaces #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Recall that, given a monad M
on Type*
, an algebra for M
consists of the following data:
- A type
X : Type*
- A "structure" map
M X → X
. This data must also satisfy a distributivity and unit axiom, and algebras forM
form a category in an evident way.
See the file category_theory.monad.algebra
for a general version, as well as the following link.
https://ncatlab.org/nlab/show/monad
This file proves the equivalence between the category of compact Hausdorff topological spaces and the category of algebras for the ultrafilter monad.
Notation: #
Here are the main objects introduced in this file.
Compactum
is the type of compacta, which we define as algebras for the ultrafilter monad.Compactum_to_CompHaus
is the functorCompactum ⥤ CompHaus
. HereCompHaus
is the usual category of compact Hausdorff spaces.Compactum_to_CompHaus.is_equivalence
is a term of typeis_equivalence Compactum_to_CompHaus
.
The proof of this equivalence is a bit technical. But the idea is quite simply that the structure
map ultrafilter X → X
for an algebra X
of the ultrafilter monad should be considered as the map
sending an ultrafilter to its limit in X
. The topology on X
is then defined by mimicking the
characterization of open sets in terms of ultrafilters.
Any X : Compactum
is endowed with a coercion to Type*
, as well as the following instances:
topological_space X
.compact_space X
.t2_space X
.
Any morphism f : X ⟶ Y
of is endowed with a coercion to a function X → Y
, which is shown to
be continuous in continuous_of_hom
.
The function Compactum.of_topological_space
can be used to construct a Compactum
from a
topological space which satisfies compact_space
and t2_space
.
We also add wrappers around structures which already exist. Here are the main ones, all in the
Compactum
namespace:
forget : Compactum ⥤ Type*
is the forgetful functor, which induces aconcrete_category
instance forCompactum
.free : Type* ⥤ Compactum
is the left adjoint toforget
, and the adjunction is inadj
.str : ultrafilter X → X
is the structure map forX : Compactum
. The notationX.str
is preferred.join : ultrafilter (ultrafilter X) → ultrafilter X
is the monadic join forX : Compactum
. Again, the notationX.join
is preferred.incl : X → ultrafilter X
is the unit forX : Compactum
. The notationX.incl
is preferred.
References #
- E. Manes, Algebraic Theories, Graduate Texts in Mathematics 26, Springer-Verlag, 1976.
- https://ncatlab.org/nlab/show/ultrafilter
The type Compactum
of Compacta, defined as algebras for the ultrafilter monad.
Equations
The forgetful functor to Type*
Equations
Instances for Compactum.forget
The "free" Compactum functor.
Equations
The adjunction between free
and forget
.
Equations
Equations
The structure map for a compactum, essentially sending an ultrafilter to its limit.
The monadic join.
Equations
The inclusion of X
into ultrafilter X
.
Equations
Equations
- Compactum.topological_space = {is_open := λ (U : set ↥X), ∀ (F : ultrafilter ↥X), X.str F ∈ U → U ∈ F, is_open_univ := _, is_open_inter := _, is_open_sUnion := _}
The structure map of a compactum actually computes limits.
Any morphism of compacta is continuous.
Given any compact Hausdorff space, we construct a Compactum.
Equations
- Compactum.of_topological_space X = {A := X, a := ultrafilter.Lim _inst_1, unit' := _, assoc' := _}
Any continuous map between Compacta is a morphism of compacta.
Equations
- Compactum.hom_of_continuous f cont = {f := f, h' := _}
The functor functor from Compactum to CompHaus.
Equations
- Compactum_to_CompHaus = {obj := λ (X : Compactum), CompHaus.mk {α := ↥X, str := Compactum.topological_space X}, map := λ (X Y : Compactum) (f : X ⟶ Y), {to_fun := ⇑f, continuous_to_fun := _}, map_id' := Compactum_to_CompHaus._proof_1, map_comp' := Compactum_to_CompHaus._proof_2}
Instances for Compactum_to_CompHaus
The functor Compactum_to_CompHaus is full.
Equations
- Compactum_to_CompHaus.full = {preimage := λ (X Y : Compactum) (f : Compactum_to_CompHaus.obj X ⟶ Compactum_to_CompHaus.obj Y), Compactum.hom_of_continuous f.to_fun _, witness' := Compactum_to_CompHaus.full._proof_2}
The functor Compactum_to_CompHaus is faithful.
This definition is used to prove essential surjectivity of Compactum_to_CompHaus.
Equations
- Compactum_to_CompHaus.iso_of_topological_space = {hom := {to_fun := id ↥((Compactum_to_CompHaus.obj (Compactum.of_topological_space ↥D)).to_Top), continuous_to_fun := _}, inv := {to_fun := id ↥(D.to_Top), continuous_to_fun := _}, hom_inv_id' := _, inv_hom_id' := _}
The functor Compactum_to_CompHaus is essentially surjective.
The functor Compactum_to_CompHaus is an equivalence of categories.
The forgetful functors of Compactum
and CompHaus
are compatible via
Compactum_to_CompHaus
.
Equations
- Compactum_to_CompHaus_comp_forget = category_theory.nat_iso.of_components (λ (X : Compactum), category_theory.eq_to_iso _) Compactum_to_CompHaus_comp_forget._proof_2
Equations
- CompHaus.forget_creates_limits = let e : category_theory.forget CompHaus ≅ Compactum_to_CompHaus.inv ⋙ Compactum.forget := (((category_theory.forget CompHaus).left_unitor.symm ≪≫ category_theory.iso_whisker_right Compactum_to_CompHaus.as_equivalence.symm.unit_iso (category_theory.forget CompHaus)) ≪≫ Compactum_to_CompHaus.inv.associator Compactum_to_CompHaus (category_theory.forget CompHaus)) ≪≫ category_theory.iso_whisker_left Compactum_to_CompHaus.inv Compactum_to_CompHaus_comp_forget in category_theory.creates_limits_of_nat_iso e.symm