Geometric realization of simplicial sets

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].

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.