This post is an expansion of all the details I did not have a good
feeling for when I started with for page 7 of Goerss-Jardine, where the
geometric realization of simplicial sets is introduced.
The construction works by constructing a few helpful categories, and
using their properties along the way. Especially after unpacking the
categorical results G-J rely on, there are quite a few categories
floating around. I shall try to be very explicit about which category is
which, and how they work.
As we recall, simplicial sets are contravariant functors from the
category [tex]\mathbf{\Delta}[/tex] of ordinal numbers to the category
of sets. We introduce the simplex category
[tex]\mathbf{\Delta}\downarrow X[/tex] of a simplicial set
[tex]X[/tex] with objects (simplices) given by maps
[tex]\sigma:\Delta^n\to X[/tex] and a map from [tex]\sigma[/tex] to
[tex]\tau[/tex] being given by a map [tex]f[/tex] in
[tex]\mathbf{\Delta}[/tex] such that [tex]\sigma = \tau f[/tex].
Interpreting each simplicial simplex as a simplicial set, this can be
thought of as the subcategory of the slice category over [tex]X[/tex]
spanned by maps from the simplicial simplices. Any map between
simplicial simplices is determined completely by a unique ordinal number
map that induces it.
Lemma 2.1
The proof of the isomorphism
[tex]X \equiv \colim_{\Delta^n\to X} \Delta^n[/tex]
taken over all simplices in the simplex category of [tex]X[/tex]
proceeds using the theorem that every functor from a small category to
sets is a colimit of representable functors.
To unpack this statement, we turn to, say, Awodey, where this is
Proposition 8.10.
Proposition 8.10 (Steve Awodey, Category Theory)
For any small category [tex]\mathbf{C}[/tex], every object P in the
functor category [tex]Sets^{\mathbf{C}^{op}}[/tex] is a colimit of
representable functors [tex]\colim_{j\in J} yA_j[/tex] using the
Yoneda embedding [tex]y:\mathbf{C}\to Sets^{\mathbf{C}^{op}}[/tex].
Specifically, we can choose an index category [tex]J[/tex] and a functor
[tex]A: J\to \mathbf{C}[/tex] such that [tex]P \equiv \colim_{J}
y\circ A[/tex].
Proof
We start by introducing the category of elements or Grothendieck
category of P. This will be our index category for the colimit, and
is often written [tex]\int_\mathbf{C} P[/tex]. This category has
objects [tex](x\in PC,C)[/tex], and arrows [tex]h: (x, C)\to
(x',C')[/tex] given by arrows [tex]h[/tex] in [tex]\mathbf{C}[/tex]
such that [tex]P(h)x = x'[/tex].
This is almost like a category of pointed sets, only that we also care
about the action of P while we're at it. Since [tex]\mathbf{C}[/tex] is
a small category, so is [tex]\int_\mathbf{C} P[/tex], and there is a
projection functor [tex]\pi: \int_\mathbf{C} P \to
\mathbf{C}[/tex] given by forgetting about the point, so sending
[tex](x, C)\to C[/tex] and preserving the arrow forming a morphism of
elements.
We also recall the Yoneda embedding in order to progress nicely here:
[tex]yC = \hom_{\textbf{C}(-,C)[/tex]. The Yoneda lemma tells us
that for contravariant [tex]F[/tex], [tex]\hom(yC, F) = FC[/tex],
naturally in [tex]F[/tex] and [tex]C[/tex], and works by assigning to
[tex]x\in FC[/tex] the natural transformation [tex]\theta_x: yC\to
F[/tex] which has components [tex](\theta_x)_D: \hom(D,C) \to
FD[/tex]. These are defined by their actions on actual maps [tex]D\to
C[/tex] and we set [tex](\theta_x)_D(h) = F(h)(x)[/tex].
In other words, a contravariant functor to sets corresponds to natural
transformations from the Yoneda embedding to the functor itself. An
element in the functor image gives rise to a particular such natural
transformation by using the element as a test case, and using the
functor to make the test runnable.
Now, returning to the proof of 8.10, we need to build a colimit that
will work as our colimit presentation of P. We will do this by using
[tex]\pi[/tex] and [tex]y[/tex]. Indeed, for an object
[tex](x,C)\in\int_C P[/tex], by the Yoneda lemma this corresponds to
some natural transformation [tex]x: yC\to P[/tex]. These natural
transformations form a subcategory of the slice category of
[tex]Sets^{\mathbf{C}^{op}}[/tex] over P by the naturality of the
Yoneda construction.
So we can build a cocone [tex]y\pi\to P[/tex] by taking the map from
[tex]y\pi(x,C)\to P[/tex] to be the natural transformation
[tex]x:yC\to P[/tex]. This is a colim because if we had some other
cocone [tex]y\pi\to Q[/tex] with components [tex]\theta_{(x,C)}:
yC\to Q[/tex], we can produce the unique natural transformation
[tex]P\to Q[/tex] by [tex]\theta_C: PC\to QC[/tex] defined by
[tex]\theta_C(x) = \theta_(x,C)[/tex] and recall that natural
transformations [tex]yC\to Q[/tex] are, by the Yoneda lemma, the same
as elements of [tex]QC[/tex].
But what does all this mean!?
This was probably all about as headache inducing as anything else to do
with Yoneda's lemma. It's a result that both in its proof and its
applications tends to climb the ladder of nested categorical constructs
pretty high.
So let's get back to the simplicial case, and tease out what this
implies for our reading. [tex]X[/tex] is a simplicial set, hence a
contravariant set-valued functor on [tex]\mathbf{\Delta}[/tex]. So
[tex]\mathbf{\Delta}[/tex] is our small category.
The category of elements, [tex]\int_{\mathbf{\Delta}} X[/tex] is the
category where objects are [tex](s, n)[/tex] for [tex]s\in X_n[/tex].
Morphisms track what happens to [tex]s[/tex] under faces and
degeneracies. Thus, specifically, by the arguments in example 1.7, we
can put [tex]\int_{\mathbf{\Delta}} X[/tex] in bijective
correspondence with the collection of all simplicial n-simplices of X,
in the sense that we associate to each [tex]s, n[/tex] the simplicial
map [tex]\iota_s: \Delta^n\to X[/tex] as defined on page 6.
Thus, the index category is clear. The category of elements for a
simplicial set really is “just” the category of simplices
[tex]\iota_s[/tex]. The representable functors are the [tex]yC[/tex]
for [tex](x,C)\in\int_{\mathbf{\Delta}} X[/tex], and so are all on
the shape [tex]\hom_{\mathbf{\Delta}}(-,n)[/tex]. But these are just
the collections of standard simplicial n-simplices.
So our simplicial set is the colimit of simplical n-simplices under the
conditions that they obey the face and degeneracy maps in the original
simplicial set.
Let's work this all through on an example. Consider the interval I,
given by non-degenerate simplices a, b, x, subject to [tex]d_0x =
a[/tex] and [tex]d_1x = b[/tex]. Maps from the simplicial n-simplex to
I can hit one of these three simplices, or any degeneracy of these.
There are two maps [tex]\Delta^0\to I[/tex], namely
[tex]\iota_0\mapsto a[/tex] and [tex]\iota_0\mapsto b[/tex].
Thus, we start the construction of our colimit by introducing cells
[tex]e^0_a[/tex] and [tex]e^0_b[/tex]. Any degeneracies are adsorbed
by the fact that a simplicial simplex is a simplicial map, hence
[tex]e^0_a: s_0\iota_0\mapsto s_0a[/tex] and so on.
There are three maps [tex]\Delta^1\to I[/tex], namely:
[tex]\iota_1\mapsto s_0a[/tex]
[tex]\iota_1\mapsto s_0b[/tex] and
[tex]\iota_1\mapsto x[/tex]
These three choices all come with boundary maps that have to be taken
into account in the colimit. Specifically, the two first maps here,
the ones that hit degenerate simplices, factor through
[tex]e^0_a[/tex] and [tex]e^0_b[/tex] respectively. There is a map
[tex]\Delta^1\to\Delta^0[/tex] (in the category
[tex]\mathbf{\Delta}[/tex]) given by [tex](0,1)\mapsto (0,0) =
s^0\iota_0[/tex]. This map corresponds to the map
[tex]s_0:\Delta^0\to\Delta^1[/tex] (as a map of simplicial
simplices), which embeds the simplex [tex]e^0_a[/tex] into
[tex]\Delta^1\to I[/tex]. Thus, this embedding along degeneracies is
a map in the index category of the colimit, and therefore leads to an
identification of any simplex with all its degeneracies in the
colimit. The non-degenerate case gives us a simplex [tex]e^1_x[/tex].
Similarly, the colimit forces the identifications [tex]d_0e^1_x =
e^0_a[/tex] and [tex]d_1e^1_x = e^0_b[/tex], finishing the
description of [tex]X[/tex] as a colimit.
Now, we have a nice candidate for the realization of a single simplicial
n-simplex: the topological n-simplex defined in Example 1.1. This is
used to define the geometric realization of a simplicial set through
“simply” forcing the realization functor to be compatible with this
colimit structure. Thus, we define the geometric realization of a
simplicial set to be the colimit of the topological n-simplices over the
same index category that we used to display [tex]X[/tex] as a colimit.
Well, what about adjointness?
The first really nice property about realization is that it is left
adjoint to the singular functor. Proving this is a sequence in
abstract symbol manipulation and remembering what everything at each
step of the way actually means. Thus, say we have a simplicial set X
and a topological space Y. Adjointness means there is an isomorphism
[tex]\hom_{\mathbf{Top}}(|X|, Y) \equiv
\hom_{\mathbf{sSet}}(X, SY)[/tex]
which is natural in both X and Y.
Now, let's consider the left hand side.
[tex]\hom_{\mathbf{Top}}(|X|, Y) \equiv
\hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|,
Y)[/tex]
by definition of the geometric realization.
[tex]\hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|,
Y) \equiv \lim_{\Delta^n\to
X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)[/tex]
because contravariant representable functors map colimits to limits.
This is Awodey 5.29, and sits very well with our intuition from sets,
vector spaces, and just about anywhere else.
Now, remember that a map in
[tex]\hom_{\mathbf{Top}}(|\Delta^n|, Y)[/tex] is a simplex in
the singular set [tex]SY[/tex], and that as we saw above, a simplicial
set is the colimit of its simplices. Thus, we get
[tex]\lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|,
Y)\equiv\lim_{\Delta^n\to X}\hom_{\mathbf{sSet}}(\Delta^n,
SY)[/tex]
and then finally, we can re-introduce the colimit inside the morphism
set
[tex]\lim_{\Delta^n\to X}\hom_{\mathbf{S}}(\Delta^n, SY) =
\hom_{\mathbf{sSet}}(\colim_{\Delta^n\to X}\Delta^n, SY)[/tex]
[tex] = \hom_{\mathbf{sSet}}(X,SY)[/tex]
Each step along the way is natural, which finishes the proof.