“Free Object Functors”

Chapter 12 (Functors) gives as an example of a functor the “free group functor” from the category of sets (Set) to the category of groups (Grp). We will call this functor \mathcal G, and its construction, as described, is the following:

For any set S, the object \mathcal G(S) is the free group on S.

Let \phi be a Set-morphism, that is, any mapping, between sets S_1 and S_2. Let G_1 and G_2 be the respective free groups, with \alpha_1: S_1 \to G_1 and \alpha_2: S_2 \to G_2 the associated mappings.

Then, by virtue of the universal property of free groups, there exists a unique Grp-morphism \psi: G_1 \to G_2 such that, as mappings, \psi \circ \alpha_1 = \alpha_2 \circ \phi.

So we decide that \mathcal G(\phi) will be this \psi. Of course, for this to be a functor, we must check that the composition of morphisms are preserved, as are identities.

Later in the chapter, the general concept of a free object in category \mathcal C' on an object in \mathcal C via a functor \mathcal F from \mathcal C' to \mathcal C is defined, as an extension of the notion of a free group; a free group thus becomes the free object in category Grp on an object in category Set following the forgetful functor \mathcal F from Grp to Set. We are called to consider the “free object functor” from \mathcal C to \mathcal C' (hence in the reverse direction respective to \mathcal F), based as above on the mapping of objects in \mathcal C to their respective free objects in \mathcal C' and of \mathcal C-morphisms to the corresponding \mathcal C'-morphisms following the above construction.

This set-up at first appears clear, but left me feeling uneasy. After some thought I managed to pinpoint two issues:

  1. Free objects, when they exist, are unique up to an isomorphism, which means that they aren’t «unique, period». For a functor to map a set to its free group, one must have a rule that says what exactly that group is; you can’t just say what it is up to an isomorphism.
  2. «Free objects» are not actually objects in the target category; they are ordered pairs (G, \alpha), where G is an object of the target category, that is, in our example, groups, and \alpha is a morphism between objects of the source category. If I build a free group functor retaining only the target object, in our case G, the \alpha part is lost.

The first issue can be solved easily for groups, and, I suspect, in most or all other cases. The existence of a free object is usually (always?) demonstrated by building some particular instance; one can decide that the functor will map the source object to that specific free object, that we will call the canonical free object.

For the second issue, one must note that the associated morphisms \alpha is not complete. We need these \alpha to build \mathcal G(\phi) from \phi. Thus the \alpha‘s remain at least partly included in the definition of the free group functor.

I don’t have the impression that if we are given the functor \mathcal G, without the knowledge of the canonical free groups that it is built upon, we can reconstruct the \alpha morphisms that are part of the definition of thise canonical free objects. The picture is rather this:

  • We define a particular rule for building a free group (G, \alpha) on any set S.
  • Based on this rule, we define the mappings from objects in Set to objects in Grp, and from morphisms in Set to morphisms in Grp.
  • The entire above procedure (including the rule for building a specific free group) constitutes our free group functor, that is our rule for mapping Set to Grp and morphisms in Set to morphisms in Grp.

In practice, it doesn’t matter much what particular rule we take for building our free objects. It does matter, however, that it be conceived of as well specified, and that we understand that not only the G part but also the \alpha in the free object serve to define the free object functor.

Functors Between Real and Complex Vector Spaces


In Chapter 12, R.G. describes three possible transformations “from real to complex vector spaces and back”. Inspired by Chapter 17 (Functors), I have examined these transformations from the functor point of view.

We can distinguish not two, but three categories here, the first and third of which are equivalent:

  1. CVec: Complex vector spaces with their usual morphisms and composition law.
  2. RVec: Real vector spaces with their usual morphisms and composition law.
  3. RVecPlus: The category of pairs (W, \iota), where W is a real vector space and \iota a vector space morphism W \to W such that \iota \circ \iota = -\Id_W (with \Id_W the identity morphism on W). A morphism \phi: (W, \iota_W) \to (W', \iota_{W'}) in this category is any linear mapping from W to W' subject to the condition: \phi \circ \iota_W = \iota_{W'} \circ \phi. These morphisms are composed as mappings. It is simple to check that this does make up a category.

Equivalence of CVec and RVecPlus

The equivalence of these two categories stems from the procedures described in Chapter 12, procedures that we will describe as isofunctors.

Functor \mathcal F_{\C\R+} from CVec to RVecPlus

Action on objects:

If V is a complex vector space, (W, \iota) = \mathcal F_{\C\R+}(V) is such that:

  • W is the real vector space obtained from V by “forgetting” multiplication by imaginaries, that is the one based on the same set as V with the same addition, the multiplication by a scalar being simply restricted to real scalars.
  • \iota is the linear mapping W \to W that sends a vector \pmb w \in W to i \cdot \pmb w, the scalar multiplication here being that in the complex vector space V. One immediately checks that we do have \iota \circ \iota = -\Id_W.

Action on morphisms:

A morphism between complex vector spaces is also, as a mapping, a morphism between the corresponding real vector space obtained by “forgetting” multiplication by imaginaries; thus, for a CVec-morphism \phi: V \to V', we can define \mathcal F_{\C\R+}(\phi) as the same mapping. It is simple to check that the condition on RVecPlus-morphisms \phi \circ \iota_V = \iota_{V'} \circ \phi is satisfied.

Functor \mathcal F_{\C\R+} from RVecPlus to CVec

The second construction described by R.G. takes a pair (\pmb W, \iota) with W real vector space and \iota morphism W \to W such that \iota \circ \iota = -\Id_W to a complex vector space. We can make this into a functor\mathcal F_{\C\R+} from RVecPlus to CVec by defining what happens to morphisms: they are left as they are, as mappings; the above condition on morphisms in RVecPlus ensures that the resulting mapping is a CVec-morphism.

These two functors are isofunctors

It is easy to check (R.G. should at least mention it – criticism) that these two operations are the inverse one of the other, which makes \mathcal F_{\C\R+} an isofunctor with \mathcal F_{\C\R+} its inverse, and CVec and RVecPlus equivalent categories.

Taking free objects between these categories yields nothing new, as we saw in the post on isofunctors.

The main interest in this category RVecPlus is that it allows us to work with real vector spaces only, avoiding in particular the need to consider complex and real versions of a given vector space, with the scalar multiplication in the former that «knows how» to multiply by complex numbers, while it does not in the latter. In the rest of this post I will talk of complex vector spaces and these «real plus» vector spaces as if they were the same thing.

Forgetful functor \mathcal F_{\R+\R} from complex to real vector spaces

One can make a forgetful functor \mathcal F_{\R+\R} from RVecPlus to RVec simply by forgetting the \iota part. The functor leaves morphisms unchanged. This is the first construction described by R.G. in Chapter 12, from CVec to RVec.

A sort of inverse construction of \mathcal F_{\R+\R}

The functor \mathcal F_{\R+\R} forgets the \iota, which cannot be retrieved. It can, however, be reinvented, though in general there is a necessary arbitrariness in the process.

Let W be a real vector space. Suppose that it is possible to find in W two subspaces, W_1 and W_2, that are complementary and isomorphic. There will in general be an infinite number of ways of choosing the pair (W_1, W_2), and, this pair being chosen, an infinite number of ways of choosing and isomorphism \iota_0: W_1 \to W_2. (One can, for instance, arbitrarily choose bases on W_1 and W_2, and create \iota_0 from an arbitrary bijection between these bases.)

\iota_0 is a mapping between two specific subspaces of W. We can, however, create a full mapping W \to W by posing:

\forall (\pmb w_1, \pmb w_2) \in W_1 \times W_2, \iota(\pmb w_1 + \pmb w_2) = -\iota_0^{-1}(\pmb w_2) + \iota_0(\pmb w_1)

It is easy to check that this \iota is linear, and that \iota \circ \iota = -\Id_W. Hence (W, \iota) is an object of RVecPlus. Applying the \mathcal F_{\R+\C} functor defined above, we obtain a complex vector space.

The necessary and sufficient condition for it to be possible to find in W two complementary and isomorphic subspaces is that W be either finite and even-dimensional, or infinite-dimensional (exercise 84).

Providing this condition is satisfied, this procedure involves the arbitrary step of choosing the subspaces, and the second arbitrary step of choosing the isomophism between them. For this reason, one cannot make it into a functor; for a functor must consist of a rule for mapping objects and morphisms. We don’t have an inverse functor for \mathcal F_{\R+\R}.

This arbitrariness is present even in the simplest non-trivial case, that of a two-dimensional real vector space. This is another formulation of the fact that in a complex vector space there is no non-arbitrary notion of “real” and “imaginary” vectors (as noted in Chapter 12).

Free objects following the forgetful functor from complex to real vector spaces

We do, however, have a functor from RVec to CVec, but one that implies doubling the initial vector space. It uses the third construction described in Chapter 12.

It is simpler to talk of this construction with RVecPlus rather than CVec; we have seen that these categories are equivalent. Given an object W in RVec, that is, a real vector space, we take V as the real vector space direct sum V = W \oplus W. We define the mapping \iota: V \to V by \forall (\pmb w, \pmb w') \in W^2, \iota(\pmb w, \pmb w') = (-\pmb w', \pmb w). It is easy to check that \iota is linear, and that \iota \circ \iota = -\Id_V. Hence (V, \iota) is an object in RVecPlus. We thus have a rule \mathcal F_{\R\R+} that maps objects of RVec to objects of RVecPlus. Now let us consider a morphism \phi in RVec, between real vector spaces W_1 and W_2. Let (V_1, \iota_1) = \mathcal F_{\R\R+}(W_1) and (V_2, \iota_2)= \mathcal F_{\R\R+}(W_2). We can form the mapping \psi: V_1 \to V_2, (\pmb v, \pmb v') \mapsto (\phi(\pmb v), \phi(\pmb v')). It is linear, and furthermore \iota_2 \circ \psi = \psi \circ \iota_1; hence \psi is a morphism in category RVecPlus, between \mathcal F_{\R\R+}(W_1) and \mathcal F_{\R\R+}(W_2). We write \psi =\mathcal F_{\R\R+}(\phi). We can check that this rule \mathcal F_{\R\R+} preserves composition and identities. It is thus a functor from RVec to RVecPlus.

Now let us examine if this \mathcal F_{\R\R+} cannot be viewed as the — or better, a — free object functor following functor \mathcal F_{\R+\R}.

Let W be a real vector space, and (V, \iota) = \mathcal F_{\R\R+)(W), that is V = W \ocirc W and \iota: V \to V, (\pmb w, \pmb w') \mapsto (-\pmb w', \pmb w). W and V are objects in RVec. Let \alpha be the RVec-morphism W \to V defined by \pmb w \mapsto (\pmb w, \pmb 0_W). We wish to check that (V, \alpha) is a free object on W following \mathcal F_{\R+\R} and that the transformation of morphisms follows suit.

Let (V', \iota') be another object of RVecPlus and \alpha' a RVec-morphism from W to \mathcal F_{\R+\R}((V', \iota')), that is a linear mapping W \to V'.

We wish to find a RVecPlus-morphism \gamma: (V, \iota) \to (V', \iota') such that \alpha' = \mathcal F_{\R+\R}(\gamma) \circ \alpha. But \mathcal F_{\R+\R}(\gamma) is just the mapping \gamma itself. For \pmb w_1 \in W, \alpha(\pmb w_1) = (\pmb w_1, \pmb 0_W). So \gamma must map any (\pmb w_1, \pmb 0_W) to \alpha'(\pmb w_1). Since \gamma must also be a RVecPlus-morphism, we must have \gamma(\pmb 0_W, \pmb w_2) = \gamma(\iota(\pmb w_2, \pmb 0_W)) = (\gamma \circ \iota)(\pmb w_2, \pmb 0_W) = (\iota' \circ \gamma)(\pmb w_2, \pmb 0_W) = \iota'(\alpha'(\pmb w_2)).

In other words, necessarily, our \gamma must be such that \gamma(\pmb w_1, \pmb w_2) = \alpha'(\pmb w_1) + \iota'(\alpha'(\pmb w_2)).

Now we must check that \gamma thus defined is indeed a RVecPlus-morphism (V, \iota) \to (V', \iota') and that \alpha' = \mathcal F_{\R+\R}(\gamma) \circ \alpha (for up to now we have shown what \gamma must be; we must check that the result is indeed adequate). This checking is unproblematic.

Thus our ((V, \iota), \alpha) is a free object on the real vector space W following the functor \mathcal F_{\R+\R}.

But it’s not quite over! We must also check that, taking

Identity functors, isofunctors and equivalent categories

Exercise 105 (Chapter 17, “Functors”):

Define the identity functor from a category to that same category. What do you suppose is meant by equivalent categories?

Identity functors

We have encountered two flavors of identity definitions. Identity mappings on sets are defined by the way they act on set elements, namely that they don’t change them. Identities in abstract categories, on the other hand, are defined by the way they behave respective to the composition of morphisms.

Categories are a bit like sets, in that they have “elements”, or rather two kinds of such: objects and morphisms. Inspired by this, we can define identity functors in a category \mathcal C as the functor \mathcal I from itself to itself that maps each object to itself and each morphism to itself. Such a functor always exists, and, since its effect is completely specified, it is unique.

But since we also have composition of functors, we can also try to define the identity functor on category \mathcal C as a functor, if it exists, \mathcal I_\circ from \mathcal C to \mathcal C such that for any category \mathcal C', for any functor \mathcal F from \mathcal C to \mathcal C', \mathcal F \circ \mathcal I_\circ = \mathcal F and for any functor \mathcal F' from \mathcal C' to \mathcal C, \mathcal I_\circ \circ \mathcal F' = \mathcal F.

It is immediate that the functor \mathcal I from the first definition satisfies the second. Since the former always exists, so does the latter. Furthermore, if there were two identity functors following the second definition, \mathcal I_\circ and \mathcal I'_\circ, we would have both \mathcal I_\circ \circ \mathcal I'_\circ = \mathcal I_\circ and \mathcal I_\circ \circ \mathcal I'_\circ = \mathcal I'_\circ, hence \mathcal I'_\circ = \mathcal I_\circ.

Thus the two definitions are equivalent; one and only one identity functor exists for each category.

Isofunctors and equivalent categories

The same exercise asks us to define the notion of equivalent categories.

We may first want to define an isofunctor between two categories:

A functor \mathcal F from category \mathcal C to category \mathcal C' is an isofunctor if and only if there exists a functor \mathcal F' from \mathcal C' to \mathcal C such that \mathcal F' \circ \mathcal F is the identity functor on \mathcal C and \mathcal F \circ \mathcal F' is the identity functor on \mathcal C'.

We can then, of course, define equivalent categories as categories between which there exists at least one isofunctor.

Free objects following an isofunctor

If \mathcal C and \mathcal C' are equivalent categories and \mathcal F is an isofunctor from \mathcal C to \mathcal C' with \mathcal F' its inverse isofunctor from \mathcal C' to \mathcal C, then we have:

If A is an object of \mathcal C and A' = \mathcal F(A), then (A', \iota_A) (with \iota_A the identity morphism on A) is a free \mathcal C' object on A following the functor \mathcal F'.

The proof is easy. If B' is any object of \mathcal C' and \beta a \mathcal C-morphism A \to \mathcal F'(B'), then for a \mathcal C'-morphism \gamma: A' \to B' to be such that \mathcal F'(\gamma) \circ \iota_A = \beta, necessarily \mathcal F'(\gamma) = \beta, that is (applying \mathcal F to each side) \gamma = \mathcal F(\beta). We can check that this \gamma = \mathcal F(\beta) indeed satisfies \mathcal F'(\gamma) \circ \iota_A = \beta. Hence there is one and only one \mathcal C'-morphism \gamma: A' \to B' such that \mathcal F'(\gamma) \circ \iota_A = \beta. This being the case for any object B' of \mathcal C' and any \beta \mathcal C-morphism A \to \mathcal F'(B'), the pair (A', \iota_A) is a free \mathcal C' object on A following \mathcal F'.

The “free object functor” in this case thus simply maps objects of \mathcal C to the same as \mathcal F does. It is easy to check that the effect of this free object functor on morphisms of \mathcal C is too just the same as that of \mathcal F. Thus, the free object functor in the case of equivalent categories following an isomorphism between them is just the inverse of that isomorphism.