forked from leanprover-community/mathlib4
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSingularSet.lean
More file actions
94 lines (73 loc) · 4.19 KB
/
SingularSet.lean
File metadata and controls
94 lines (73 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/-
Copyright (c) 2023 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Kim Morrison, Adam Topaz
-/
module
public import Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex
public import Mathlib.AlgebraicTopology.TopologicalSimplex
public import Mathlib.CategoryTheory.Limits.Presheaf
public import Mathlib.Topology.Category.TopCat.Limits.Basic
public import Mathlib.Topology.Category.TopCat.ULift
/-!
# The singular simplicial set of a topological space and geometric realization of a simplicial set
The *singular simplicial set* `TopCat.toSSet.obj X` of a topological space `X`
has `n`-simplices which identify to continuous maps `stdSimplex ℝ (Fin (n + 1)) → X`,
where `stdSimplex ℝ (Fin (n + 1))` is the standard topological `n`-simplex,
defined as the subtype of `Fin (n + 1) → ℝ` consisting of functions `f`
such that `0 ≤ f i` for all `i` and `∑ i, f i = 1`.
The *geometric realization* functor `SSet.toTop` is left adjoint to `TopCat.toSSet`.
It is the left Kan extension of `SimplexCategory.toTop` along the Yoneda embedding.
## Main definitions
* `TopCat.toSSet : TopCat ⥤ SSet` is the functor
assigning the singular simplicial set to a topological space.
* `SSet.toTop : SSet ⥤ TopCat` is the functor
assigning the geometric realization to a simplicial set.
* `sSetTopAdj : SSet.toTop ⊣ TopCat.toSSet` is the adjunction between these two functors.
## TODO (@joelriou)
- Show that the singular simplicial set is a Kan complex.
- Show the adjunction `sSetTopAdj` is a Quillen equivalence.
-/
@[expose] public section
universe u
open CategoryTheory
/-- The functor associating the *singular simplicial set* to a topological space.
Let `X : TopCat.{u}` be a topological space.
Then the singular simplicial set of `X`
has as `n`-simplices the continuous maps `ULift.{u} (stdSimplex ℝ (Fin (n + 1))) → X`.
Here, `stdSimplex ℝ (Fin (n + 1))` is the standard topological `n`-simplex,
defined as `{ f : Fin (n + 1) → ℝ // (∀ i, 0 ≤ f i) ∧ ∑ i, f i = 1 }` with its subspace topology. -/
noncomputable def TopCat.toSSet : TopCat.{u} ⥤ SSet.{u} :=
Presheaf.restrictedULiftYoneda.{0} SimplexCategory.toTop.{u}
/-- If `X : TopCat.{u}` and `n : SimplexCategoryᵒᵖ`,
then `(toSSet.obj X).obj n` identifies to the type of continuous
maps from the standard simplex `stdSimplex ℝ (Fin (n.unop.len + 1))` to `X`. -/
noncomputable def TopCat.toSSetObjEquiv (X : TopCat.{u}) (n : SimplexCategoryᵒᵖ) :
(toSSet.obj X).obj n ≃ C(stdSimplex ℝ (Fin (n.unop.len + 1)), X) :=
Equiv.ulift.{0}.trans (ConcreteCategory.homEquiv.trans
(Homeomorph.ulift.continuousMapCongr (.refl _)))
/-- The *geometric realization functor* is
the left Kan extension of `SimplexCategory.toTop` along the Yoneda embedding.
It is left adjoint to `TopCat.toSSet`, as witnessed by `sSetTopAdj`. -/
noncomputable def SSet.toTop : SSet.{u} ⥤ TopCat.{u} :=
stdSimplex.{u}.leftKanExtension SimplexCategory.toTop
set_option backward.isDefEq.respectTransparency false in
/-- Geometric realization is left adjoint to the singular simplicial set construction. -/
noncomputable def sSetTopAdj : SSet.toTop.{u} ⊣ TopCat.toSSet.{u} :=
Presheaf.uliftYonedaAdjunction
(SSet.stdSimplex.{u}.leftKanExtension SimplexCategory.toTop)
(SSet.stdSimplex.{u}.leftKanExtensionUnit SimplexCategory.toTop)
/-- The geometric realization of the representable simplicial sets agree
with the usual topological simplices. -/
noncomputable def SSet.toTopSimplex :
SSet.stdSimplex.{u} ⋙ SSet.toTop ≅ SimplexCategory.toTop :=
Presheaf.isExtensionAlongULiftYoneda _
instance : SSet.toTop.{u}.IsLeftKanExtension SSet.toTopSimplex.inv :=
inferInstanceAs (Functor.IsLeftKanExtension _
(SSet.stdSimplex.{u}.leftKanExtensionUnit SimplexCategory.toTop.{u}))
/-- The singular simplicial set of a totally disconnected space is the constant simplicial set. -/
noncomputable def TopCat.toSSetIsoConst (X : TopCat.{u}) [TotallyDisconnectedSpace X] :
TopCat.toSSet.obj X ≅ (Functor.const _).obj X :=
(NatIso.ofComponents (fun n ↦ Equiv.toIso
((TotallyDisconnectedSpace.continuousMapEquivOfConnectedSpace _ X).symm.trans
(X.toSSetObjEquiv n).symm))).symm