Categories of Compact Hausdorff Spaces #
We construct the category of compact Hausdorff spaces satisfying an additional property P
.
Implementation #
We define a structure CompHausLike
which takes as an argument a predicate P
on topological
spaces. It consists of the data of a topological space, satisfying the additional properties of
being compact and Hausdorff, and satisfying P
. We give a category structure to CompHausLike P
induced by the forgetful functor to topological spaces.
It used to be the case (before https://github.com/leanprover-community/mathlib4/pull/12930 was merged) that several different categories of compact
Hausdorff spaces, possibly satisfying some extra property, were defined from scratch in this way.
For example, one would define a structure CompHaus
as follows:
structure CompHaus where
toTop : TopCat
[is_compact : CompactSpace toTop]
[is_hausdorff : T2Space toTop]
and give it the category structure induced from topological spaces. Then the category of profinite spaces was defined as follows:
structure Profinite where
toCompHaus : CompHaus
[isTotallyDisconnected : TotallyDisconnectedSpace toCompHaus]
The categories Stonean
consisting of extremally disconnected compact Hausdorff spaces and
LightProfinite
consisting of totally disconnected, second countable compact Hausdorff spaces were
defined in a similar way. This resulted in code duplication, and reducing this duplication was part
of the motivation for introducing CompHausLike
.
Using CompHausLike
, we can now define
CompHaus := CompHausLike (fun _ ↦ True)
Profinite := CompHausLike (fun X ↦ TotallyDisconnectedSpace X)
.
Stonean := CompHausLike (fun X ↦ ExtremallyDisconnected X)
.
LightProfinite := CompHausLike (fun X ↦ TotallyDisconnectedSpace X ∧ SecondCountableTopology X)
.
These four categories are important building blocks of condensed objects (see the files
Condensed.Basic
and Condensed.Light.Basic
). These categories share many properties and often,
one wants to argue about several of them simultaneously. This is the other part of the motivation
for introducing CompHausLike
. On paper, one would say "let C
be on of the categories CompHaus
or Profinite
, then the following holds: ...". This was not possible in Lean using the old
definitions. Using the new definitions, this becomes a matter of identifying what common property
of CompHaus
and Profinite
is used in the proof in question, and then proving the theorem for
CompHausLike P
satisfying that property, and it will automatically apply to both CompHaus
and
Profinite
.
The type of Compact Hausdorff topological spaces satisfying an additional property P
.
- toTop : TopCat
The underlying topological space of an object of
CompHausLike P
. - is_compact : CompactSpace ↑self.toTop
The underlying topological space is compact.
- is_hausdorff : T2Space ↑self.toTop
The underlying topological space is T2.
- prop : P self.toTop
The underlying topological space satisfies P.
Instances For
Equations
- CompHausLike.instCoeSortType P = { coe := fun (X : CompHausLike P) => ↑X.toTop }
Equations
- CompHausLike.category P = CategoryTheory.InducedCategory.category CompHausLike.toTop
Equations
- CompHausLike.concreteCategory P = CategoryTheory.InducedCategory.concreteCategory CompHausLike.toTop
Equations
- CompHausLike.hasForget₂ P = CategoryTheory.InducedCategory.hasForget₂ CompHausLike.toTop
A constructor for objects of the category CompHausLike P
,
taking a type, and bundling the compact Hausdorff topology
found by typeclass inference.
Equations
- CompHausLike.of P X = CompHausLike.mk (TopCat.of X) ⋯
Instances For
Equations
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If P
imples P'
, then there is a functor from CompHausLike P
to CompHausLike P'
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If P
imples P'
, then the functor from CompHausLike P
to CompHausLike P'
is fully
faithful.
Equations
- CompHausLike.fullyFaithfulToCompHausLike h = CategoryTheory.fullyFaithfulInducedFunctor fun (X : CompHausLike P) => let_fun this := ⋯; CompHausLike.of P' ↑X.toTop
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The fully faithful embedding of CompHausLike P
in TopCat
.
Equations
- CompHausLike.compHausLikeToTop P = CategoryTheory.inducedFunctor CompHausLike.toTop
Instances For
The functor from CompHausLike P
to TopCat
is fully faithful.
Equations
- CompHausLike.fullyFaithfulCompHausLikeToTop P = CategoryTheory.fullyFaithfulInducedFunctor CompHausLike.toTop
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Any continuous function on compact Hausdorff spaces is a closed map.
Any continuous bijection of compact Hausdorff spaces is an isomorphism.
Equations
- ⋯ = ⋯
Any continuous bijection of compact Hausdorff spaces induces an isomorphism.
Equations
Instances For
Construct an isomorphism from a homeomorphism.
Equations
- CompHausLike.isoOfHomeo f = (CompHausLike.fullyFaithfulCompHausLikeToTop P).preimageIso (TopCat.isoOfHomeo f)
Instances For
Construct a homeomorphism from an isomorphism.
Equations
- CompHausLike.homeoOfIso f = TopCat.homeoOfIso ((CompHausLike.compHausLikeToTop P).mapIso f)
Instances For
The equivalence between isomorphisms in CompHaus
and homeomorphisms
of topological spaces.
Equations
- CompHausLike.isoEquivHomeo = { toFun := CompHausLike.homeoOfIso, invFun := CompHausLike.isoOfHomeo, left_inv := ⋯, right_inv := ⋯ }
Instances For
A constant map as a morphism in CompHausLike
Equations
- T.const s = ContinuousMap.const (↑T.toTop) s