This note isolates a small ambiguity that occurs when one moves between covariant and contravariant functors indexed by a category, which can be harmful pedagogically because it hides the difference between two distinct operations —
and
.
The opposite operation “op” reverses arrows while the relabeling makes a fresh copy of a category, preserving its structure but changing its name or identity inside a chosen ambient category. Conflating these two operations seemingly is the root of a common beginner’s mistake: treating a relabeling of
as though it were an ordinary opposite operation internal to
.
The relabeling construction
is mathematically void in the precise sense that no invariant construction detects the difference, and for this very reason, experts usually ignore it, which itself remains the source of perceptual trap.
The basic variance problem and relabeling
Let
be a category. A covariant functor
assigns to each
an object
, and to each morphism
a morphism
.
A presheaf on
is instead a contravariant functor
where the variance distinction is encoded in the source category in our convention. The category
has the same objects as
, but its arrows are reversed:
.
In general
encodes (often a strict) extra structure relative to the original
, whose existence is determined a posteriori by the structure of
and the choice of pair of objects.
Suppose we want to treat presheaves on
as covariant functors. A simple way is to relabel it as
, then we have the notion of copresheaf, the literal dual of presheaf under the identification of the hom objects:
![]()
But this identification contains two conceptually different components:
- First, one forms
, reversing arrows formally, without any assertion that there is any morphisms in the reversed direction of codomain to domain, in terms of original arrow; - Secondaly, one regards the resulting category as a new indexing category
.
The first operation changes variance, while the second does presentation without reversing anything: it only gives a fresh name to the already reversed category.
Although this distinction seems mathematically vacuous, it comes out erroneous once one recklessly interprets, or even worse, writes
by violating notation, hiding the first operation inside the second, which may suggest that
itself carries a canonical arrow-reversing symmetry.
A formal ambient category with relabeling
To separate the two steps explicitly, we introduce a relabeling (duplication) operation, which produces a fresh isomorphic copy of a category.
Define a relabeling endofunctor
by tagging:
![]()
This needs a bit of elaboration.
The label
can be defined dependently of each object by denoting
, which may, depending on the convention, collapse to the unique object depending only on the category
, displayed in the isomorphism
, where
is the terminal category.
More explicitly, if we assume
small, we observe that the isomorphism
to the category of elements induces the unique natural transformation
depending only on
under
![]()
Then we must admit that the relabeling is a mathematically void 2-functor in a sense that the following natural isomorphism displays:
![]()
The isomorphism
is precisely the component
and
is a genuine, strict 2-functor, distinct from
on the nose —
as objects — different underlying sets yet naturally isomorphic to
.
Clean decomposition
The relabeled category is the composite
, where
supplies the arrow reversal (the variance change) determined a posteriori from
and
supplies the new name a priori. The two contributions we’re trying to separate here are literally separate in the composite.
And this is exactly where the worst-case abusive notion of
sits: it is the false assertion that
on the nose — equivalently, smuggling in
.
The correct conclusive statement is then
![]()