nLab walking structure

Walking structures

Walking structures


Around the nLab and elsewhere, one occasionally sees an expression “the walking _____” where the blank is some mathematical concept. This is a colloquial way of referring to an archetypal model of the concept or type, and usually refers to a free or initial form of such a kind of structure.

Pronunciation is just as in ‘John is a walking almanac’ or ‘Eugene Levy is a walking pair of eyebrows’. The term is believed to have been introduced by James Dolan.

Sometimes, “the free-living _____” or “the free-standing _____” is used instead; this terminology is probably much older.


The idea is probably easier to apprehend through examples rather than through a formal definition, but for the record:

If XX is a type of mathematical structure that can be defined in a category, higher category, or category with some extra structure, then the walking X refers to the free category (resp. higher category, category with suitable structure) containing an XX.

More precisely, if StructCatStructCat denotes some (higher) category of categories with an appropriate type of structure, then the walking X is an object [X]StructCat[X] \in StructCat together with a natural equivalence

StructCat([X],C){XsinC} StructCat([X],C) \;\simeq\; \big\{Xs \; in \; C\}

between the hom-set/category/space from [X][X] to CC, for any CStructCatC\in StructCat, and the set/category/space of all Xs in CC.


In other words, the structured category [X][X] equipped with its canonical type XX is initial among such structured categories that come equipped with such types XX. A fancier expression is that [X][X] ‘coclassifies’ such types: this is analogous to how a classifying space BGB G for a topological group GG classifies GG-bundles, in that every GG-bundle p:EXp: E \to X over a suitable space XX has a classifying map χ p:XBG\chi_p: X \to B G (unique up to homotopy) such that pulling back the canonical GG-bundle type π:EGBG\pi: E G \to B G along χ p\chi_p reproduces the type pp. Only here we say ‘coclassifies’ (as for example in this comment), since here we instead “push forward” the canonical type XX of [X][X] along a structured-category morphism [X]C[X] \to C to obtain a given type of CC.


The last two examples indicate the need for a little care: the doctrine or type of structured category in which the ‘XX’ of “the walking XX” lives should either be specified or clear from context. For example, if one simply says “the walking monoid”, this means the simplex category if the surrounding context is the doctrine of monoidal categories – but means something else (the Lawvere theory of monoids) if the ambient context is the doctrine of categories with finite products, and it means the category opposite to that of finitely presentable monoids if we are in the doctrine of finitely complete categories.

If the doctrine is not specified, then a reasonable default is a ‘minimal’ doctrine in which the concept makes sense; for example, to make sense of monoids, one doesn’t need more than monoidal categories. See also microcosm principle.

Thus, more generally,

Relation to initial objects

The walking X is, of course, not the same as the initial X.

Consider for example the case when X is a pointed monoid (a monoid equipped with an element). The initial pointed monoid (in SetSet) is the natural numbers equipped with 11\in \mathbb{N}. Whereas the walking pointed monoid (qua category with finite products, say) is a category C MC_M with finite products containing a monoid object MC MM\in C_M and an “elemente:1Me:1\to M. They have different types and different universal properties: \mathbb{N} has a universal property mapping into other pointed monoids in SetSet, while C MC_M has a universal property mapping into other categories with products equipped with pointed monoids.

Nevertheless, the first sits inside the second! Specifically, for any category CC with products, the “underlying set” functor C(1,):CSetC(1,-):C\to Set is product-preserving and hence carries monoid objects to monoid objects, and in the case of the walking pointed monoid we have C M(1,M)C_M(1,M) \cong \mathbb{N}.

This is true rather generally: the initial X is the underlying X of the walking X. One general theorem of this sort is the following:


Let KK be a 2-category containing an object SS, and suppose that:

  1. The domain projection KSKK\sslash S \to K from the lax slice 2-category has a section. Explicitly, for every object XX we have a map s X:XSs_X : X\to S and for every morphism f:XYf:X\to Y we have a 2-cell σ f:s Xs Yf\sigma_f : s_X \to s_Y f, such that for every 2-cell α:fg\alpha :f\to g we have σ g.s Yα=σ f\sigma_g . s_Y\alpha = \sigma_f, and these vary functorially.
  2. We have s S1 Ss_S \cong 1_S, and for any XX the composite s Xσ s Xs Ss Xs Xs_X \xrightarrow{\sigma_{s_X}} s_S s_X \cong s_X is the identity.

Then for any XX, the morphism s X:XSs_X:X\to S is the initial object of the hom-category K(X,S)K(X,S).


We will use the characterization of initial objects via cones over the identity. Thus, we must construct a natural transformation from the constant functor Δ s X:K(X,S)K(X,S)\Delta_{s_X} : K(X,S) \to K(X,S) to the identity, which is the identity at s Xs_X. However, given any f:XSf:X\to S, we have the 2-cell s Xσ fs Sffs_X \xrightarrow{\sigma_f} s_S f \cong f, and the assumption σ g.s Yα=σ f\sigma_g . s_Y\alpha = \sigma_f makes this a natural transformation; and the final assumption says exactly that this is the identity at s Xs_X.

To see how this theorem implies that the initial X is the underlying X of the walking X, consider again the case of pointed monoids. Let KK be the 2-category of categories with products and product-preserving functors, let S=SetS=Set, and let s C:CSets_C : C \to Set be C(1,)C(1,-). The hypotheses are easy to verify; thus the theorem tells us that C(1,)C(1,-) is the initial functor CSetC\to Set for any CC.

Now take CC to be the walking pointed monoid C MC_M above. Then its universal property tells us that functors F:C MSetF:C_M\to Set are equivalent to pointed monoids F(M)F(M) in SetSet; so we see that C(1,M)C(1,M) is the initial pointed monoid in SetSet, i.e. \mathbb{N}.

A similar argument applies whenever we have a “SetSet-like” object of a 2-category with “underlying set” morphisms to it. For instance, in place of categories with finite products we could consider categories with finite limits. However, in other cases, such as monoidal categories, there is a disconnect: the natural “underlying set” functor for a monoidal category CC is C(I,)C(I,-), where II is the unit object; but in general this is only lax monoidal, whereas the universal property of a “walking X qua monoidal category” is relative to strong monoidal functors.

It does often happen that this disconnect can be bridged. For instance, suppose X is something that can be defined in any multicategory (like a pointed monoid). Then we can apply the above argument to the 2-category of multicategories, as the walking X qua multicategory has a universal property relative to functors of multicategories, even though such functors correspond to lax functors between monoidal categories. It follows that the underlying set functor C M(;):C MSetC_M(;-) : C_M\to Set of the walking X qua multicategory corresponds to the initial X in SetSet.

Moreover, we can deduce from this that the underlying pointed monoid of the walking X qua monoidal category is also the initial X in SetSet. This is because the walking X qua monoidal category is the monoidal category freely generated by the walking X qua multicategory, and a multicategory embeds fully-faithfully in the monoidal category that it freely generates. In terms of the type theory that generates walking Xs, the latter fact can be seen as a sort of canonicity for the tensor-product constructor.

Similar arguments apply in other cases. For instance, in the 2-category of double categories we can take SS to be the double category Span; this has the same problem as that of monoidal categories, but we can solve it similarly by considering virtual double categories instead.

On the other hand, there are also cases where this argument does not apply. For instance, X could be something that can be defined in a monoidal category but not in a multicategory, such as a Frobenius monoid. In this case the claim doesn’t even make sense: the functor C(I,)C(I,-), being only lax monoidal in general, need not preserve Frobenius monoids. It seems that in most cases where an “underlying set” functor C(I,)C(I,-) preserves Xs, there is a kind of generalized multicategory in which Xs can be defined and this argument carried through, but I do not know of a general theory suggesting this.


  • A Café post essentially about walking objects (among other things), including a comment that explains the terminology.

The terminology “free-living” appears in:

Last revised on December 10, 2023 at 18:00:52. See the history of this page for a list of all contributions to it.