The following question is a bit vague, but maybe someone can help me to make this more precise (and maybe even give an answer).

Consider the following two situations:

  1. On the 2-cateogry $\mathrm{Cat}$ of categories, functors and natural transformations we have a 2-functor $\mathrm{op} \colon \mathrm{Cat} \to \mathrm{Cat}^{\mathrm{co}}$, where $\mathrm{Cat}^{\mathrm{co}}$ denotes the 2-category $\mathrm{Cat}$ with the direction of natural transformations reversed. Generally, we might be interested in contravariant functors, which consists of a pair of categories $(A,B)$ and a functor $F \colon A \to B^\mathrm{op}$. But now $A$ is an object of $\mathrm{Cat}$, while $B$ is an object of $\mathrm{Cat}^\mathrm{op}$. So how can we talk about a morphism between objects of different 2-categories?
  2. On the category $\mathrm{Vect}$ of real vector spaces we have a functor ${}^* \colon \mathrm{Vect} \to \mathrm{Vect}^\mathrm{op}$ mapping vector spaces to their duals. Interesting additional structure on a vector space is given by an inner product, which is equivalently a linear map $V \to V^*$. But now $V$ is an object in $\mathrm{Vect}$, while $V^*$ is an object in $\mathrm{Vect}^\mathrm{op}$. Again, how can we talk about morphisms between objects of different categories?

The obvious answer is that $\mathrm{Vect}$ and $\mathrm{Vect}^\mathrm{op}$ share the same class of objects. And $\mathrm{Cat}$ and $\mathrm{Cat}^\mathrm{co}$ share the same objects and 1-morphisms. How can one encode this categorically? And even if we accept that, why do we, for example, treat $V^*$ as an object in $\mathrm{Vect}$ and not $V$ as in object in $\mathrm{Vect}^\mathrm{op}$?

  • $\begingroup$ I think you're confusing yourself; both $A$ and $A^{op}$ live in $Cat$ since they're both categories, and they both also live in $Cat^{op}$ since they're also both opposites; $A^{op}$ is the opposite of $A$ by defn, and this gives that $(A^{op})^{op}=A$ so $A$ is also an opposite category living in $Cat^{op}$. With vector spaces the situation is a little tricky, since taking dual vector spaces isn't an involution while taking dual categories is, but for the categorical setting there is no issue. $\endgroup$
    – Alec Rhea
    Dec 11, 2020 at 20:40

2 Answers 2


When we say "Let $\mathcal A$ be a category", there actually is a bit of ambiguity about what category $\mathcal A$ itself lies in. It could be $\mathcal Cat$, $\mathcal Cat^{op}$, $\mathcal Cat^{co}$, etc. The key is how our constructions transform with the morphisms in whatever category we choose.

For example, if $\mathcal A$ and $\mathcal B$ are categories, we can form the functor category $\mathcal{Cat}(\mathcal A, \mathcal B)$. That doesn't mean we have a map $\mathcal{Cat} \times \mathcal{Cat} \to \mathcal{Cat}$. Instead, it's a map $\mathcal{Cat}^{op} \times \mathcal{Cat} \to \mathcal{Cat}$ since given a functor $f \colon \mathcal A \to \mathcal {A'}$, we get a functor $\mathcal{Cat}(f, \mathcal B) \colon \mathcal{Cat}(\mathcal {A'}, \mathcal B) \to \mathcal{Cat}(\mathcal A, \mathcal B)$. You can also check that natural transformations $f \to f'$ give natural transformations $\mathcal{Cat}(f, \mathcal B) \to \mathcal{Cat}(f', \mathcal B)$. Similarly, you can check that the functor category is covariant in its second argument.

Let's see what that means for $\mathcal{Cat}(\mathcal A, \mathcal B^{op})$. In order to form this, we need $\mathcal A \in \mathcal {Cat}^{op}$ and $\mathcal B^{op} \in \mathcal {Cat}$. That means that $\mathcal B$ is in $\mathcal {Cat}^{co}$. So when we talk about contravariant functors from $\mathcal A$ to $\mathcal B$, we're implicitly taking $\mathcal A$ to be in $\mathcal {Cat}^{op}$ and $\mathcal B$ to be in $\mathcal {Cat}^{co}$, or at least that's what we should do.

Carrying out this sort of analysis in the $\mathcal {Vect}$ example, it actually works out fine.

In order to form the set of maps $V \to V^{*}$, we need both $V \in \mathcal {Vect}^{op}$ and $V^{*} \in \mathcal {Vect}$. But that means that $V \in \mathcal {Vect}^{op}$ either way. So this particular construction varies (contravariantly) with all maps in $\mathcal {Vect}$.

To do this kind of analysis in general, we might sometimes need one more component: the core. The core of a category is the category with the same objects, but whose morphisms are only the isomorphisms of the original category. I'll denote this $\mathcal C^{core}$. Note that $(\mathcal C^{op})^{core} \simeq \mathcal C^{core}$. One key property of the core is that there's a both a functor $\mathcal C^{core} \to \mathcal C$ and $\mathcal C^{core} \to \mathcal C^{op}$, so if $x \in \mathcal C^{core}$, it can equally be mapped to $\mathcal C$ or $\mathcal C^{op}$, but it only transforms via isomorphisms, rather than all morphisms.

This is useful when the same object is used both covariantly and contravariantly. For example, the endomorphism monoid $\mathcal C(x, x)$ uses $x$ in both ways. That means that this construction doesn't transform with all morphisms, but only isomorphisms. That is, if there's a morphism $x \to y$, we shouldn't expect there to be a corresponding morphism $\mathcal C(x, x) \to \mathcal C(y, y)$. The same thing applies to the automorphism group of an object.

If we apply our analysis to $\mathcal C(x, x)$, we need both $x \in \mathcal C^{op}$ and $x \in \mathcal C$. To achieve this, we take $x \in \mathcal C^{core}$ and use the maps $\mathcal C^{core} \to \mathcal C$ and $\mathcal C^{core} \to \mathcal C^{op}$ to satisfy both.


If you put the op on the first variable things get less confusing. If you define the dual as a functor $^* : \text{Vect}^{op}\to \text{Vect}$, then the definition of the inner product is what it should be : a maps $V \to V^*$ in the category of vector spaces. This means that in $\text{Vect}^{op}$, an inner product is a map $V^*\to V$.

The same goes for the first part, if you put the $co$ on the domain of the $2$-functor $op$, you get that a contravariant functor is a $1$-morphism $F: A \to B^{op}$ in $\text{Cat}$, but here since this is also a $1$-morphism in $\text{Cat}^{co}$ it doesn't really matter.

  • $\begingroup$ But I would still have the problem that formally $V$ and $V^*$ end up in two different categories, namely $\mathrm{V}^\mathrm{op}$ and $\mathrm{V}$, respectively. $\endgroup$ Feb 5, 2020 at 7:54
  • $\begingroup$ Why would $V$ be in the wrong category now ? When you define the inner product, you are making a statement in the category $\text{Vect}$, you are saying in vector spaces you are given a map $V\to V^*$ where $V^*$ is the image of $V$ which is also an object of $\text{Vect}^{op}$ under $^*$. $\endgroup$ Feb 5, 2020 at 8:11
  • $\begingroup$ The only thing is important, I think, is that you chose which category you are using to define your structure maps. $\endgroup$ Feb 5, 2020 at 8:13
  • $\begingroup$ I agree, that one needs to choose in which category ($\mathrm{V}$ or $\mathrm{V}^\mathrm{op}$) the map $V \to V^*$ should live. But in order to do that we need to identify an object of $\mathrm{Vect}$ with an object of $\mathrm{Vect}^\mathrm{op}$ (or the other way around). What I do not understand is how one can formulate this precisely. $\endgroup$ Feb 5, 2020 at 8:44
  • $\begingroup$ The have the same class of objects by definition, so $V^*$ makes reference to an object of both, don’t overthink it otherwise you’ll end up drowning in universes, accessible ordinals and other scary stuff. $\endgroup$ Feb 5, 2020 at 9:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .