Adjoints and universality
Now we have the notion of an adjunction, along with its unit and counit. It’s time to start tying them back into universality.
The unit of an adjunction picks out, for each object , an arrow
. This arrow is an object in the comma category
. And, amazingly enough, it’s an initial object in that category. Given any other object
and arrow
we need to find an arrow
in
so that
. Since
the obvious guess is
. Then we can calculate:
where the second equality uses the naturality of and the third uses the “quasi-inverse” condition we discussed yesterday.
So, an adjunction means that for each and every object the component of the unit
gives a universal arrow from
to
. Dually, for every object
the component of the counit
gives a couniversal arrow from
to
.
On the other hand, let’s say we start out with a functor and for each
an object
and an arrow
that is universal from
to
. Then given an arrow
we can build an arrow
. By the universality of
there is then a unique arrow
so that
. It’s straightforward now to show that
and
are the object and morphism functions of a functor
, and that
is a natural transformation.
Now, say we have functors and
and a natural transformation
so that each
is universal from
to
. Given an arrow
, there is (by universality of
) a unique arrow
so that
. This sets up a bijection
defined by
. This construction is natural in
because
is, and it’s natural in
because
is a functor. And so this data is enough to define an adjunction
.
Dually, we can start with a functor and for each
an object
and an arrow
universal from
to
. Then we can build
up into a functor
and
up into a natural transformation with each component a couniversal arrow. And this is enough to define an adjunction
.
And, of course, we know that giving a universal arrow from
to
is equivalent to giving a representation of the functor
, and dually.
So we have quite a long list of ways to specify an adjunction
- Functors
and
and a natural isomorphism
- Functors
and
and natural transformations
and
satisfying
and
- A functor
and for each
an object
and a universal arrow
- A functor
and for each
an object
and a couniversal arrow
- A functor
and for each
a representation
of the functor
- A functor
and for each
a representation
of the functor
- Functors
and
and a natural transformation
so that each component
is universal from
to
- Functors
and
and a natural transformation
so that each component
is universal from
to
More on units and counits
Last time we took an adjunction and came up with two natural transformations, weakened versions of the natural isomorphisms defining an equivalence. Today we’ll see how to go back the other way.
So let’s say we have an adjunction given by natural isomorphism
. Remember that we defined the unit and counit by
and
. We can take either one of these and reverse-engineer it. For instance, given an arrow
in
we can calculate
so once we know the unit of the adjunction we can calculate from it. Notice how we use the naturality of
in the second equality.
Dually, we can determine in terms of the counit. Given
in
, we calculate:
so we can also determine the natural isomorphism of hom-sets in terms of the counit.
Of course, since we can determine the same isomorphism (technically the isomorphism and its inverse) from either the unit or the counit, they must be related. So what do these equations really tell us?
For this we have to go back to the way we compose natural transformations. The obvious way is where we have natural transformations and
between three functors from
to
. We put them together to get
.
Less obviously, we can consider functors and
from
to
, functors
and
from
to
, and natural transformations
and
. We can put these together to get
, defined by
or
(exercise: show that these two composites are equal).
Now what we need here is this “horizontal” composite. Let’s go back to the adjunction and take the natural transformations and
. The components of their horizontal composite
is then given by
. Similarly, if we take the natural transformations
and
, their horizontal composite has components given by
. Now the “vertical” composite of these two
has components
. And the above formula for the adjunction isomorphism in terms of the unit tells us that this is
.
To put it at a bit of a higher level, if we start with the functor , use the unit to turn it into the functor
, then use the counit to move back to
, the composite natural transformation is just the identity transformation on
. Similarly, we can show that the composite
taking
to
and back to
is the identity transformation on
.
Inherent in this is also the converse statement. If we have natural transformations and
satisfying these two identities, then we can use the above formulae to define a natural isomorphism
in terms of
and its inverse in terms of
. Thus an adjunction is determined by a unit and a counit satisfying these “quasi-inverse” relations.
If you’re up to it, try to see where we’ve seen these quasi-inverse relations before in a completely different context. I’ll be coming back to this later.
The Unit and Counit of an Adjunction
Let’s say we have an adjunction . That is, functors
and
and a natural isomorphism
.
Last time I drew an analogy between equivalences and adjunctions. In the case of an equivalence, we have natural isomorphisms and
. This presentation seems oddly asymmetric, and now we’ll see why by moving these structures to the case of an adjunction.
So let’s set like we did to show that an equivalence is an adjunction. The natural isomorphism is now
. Now usually this doesn’t give us much, but there’s one of these hom-sets that we know has a morphism in it: if
then
. Then
is an arrow in
from
to
.
We’ll call this arrow . Doing this for every object
gives us all the components of a natural transformation
. For this, we need to show the naturality condition
for each arrow
. This is a straightforward calculation:
using the definition of and the naturality of
.
This natural isomorphism is called the “unit” of the adjunction
. Dually we can set
and extract an arrow
for each object
and assemble them into a natural transformation
called the “counit”. If both of these natural transformations are natural isomorphisms, then we have an equivalence.
For a particular example, let’s look at this in the case of the free-monoid functor as the left adjoint to the underlying-set monoid
. The unit will give an arrow
, which here is just the inclusion of the generators (elements of
) as elements of the underlying set of the free monoid. The counit, on the other hand, will give an arrow
. That is, we take all elements of the monoid
and use them as generators of a new free monoid — write out “words” where each “letter” is a whole element of
. Then to take such a word and send it to an element of
, we just take all the letters and multiply them together as elements of
. Since we gave a description of
last time for this case, it’s instructive to sit down and work through the definitions of
and
to show that they do indeed give these arrows.
Adjoint functors
Today I return to the discussion of universals, limits, representability, and related topics. The last piece of this puzzle is the notion of an adjunction. I’ll give a definition and examples today and work out properties later.
An adjunction between categories and
consists of a pair of functors
and
and a natural isomorphism
. Notice that the functors on either side of
go from
to
, so each component
is a bijection of sets. We say that
is “left adjoint” to
, and conversely that
is “right adjoint” to
, and we write
.
Now, we have been seeing these things all along our trip so far, but without mentioning them as such. For instance, we have all the “free” constructions:
- the free monoid on a set
- the free group on a set
- the free group on a monoid
- the semigroup ring
- the free ring on an abelian group
- the free module on a set
- the free algebra on a module
and maybe more that I’ve mentioned, but don’t recall.
These all have a very similar form in their definitions. For instance, the free monoid on a set
is characterized by the following universal property: every function
from
into the underlying set of a monoid
extends uniquely to a monoid homomorphism
. If we write the underlying set of
as
, we easily see that
is a functor. The condition then is that every element of the hom-set
corresponds to exactly one element of the hom-set
, and every monoid homomorphism restricts to a function on
. That is, for every set
and monoid
we have an isomorphism of sets
.
Now, given a function from a set to a set
we can consider
to be a subset of the free monoid on itself, giving a function
. This extends to a unique monoid homomorphism
. This construction preserves identities and compositions, making
into a functor from
to
.
If we have a function and a monoid homomorphism
then we can build functions
and
. The isomorphisms
and
commute with these arrows, so they form the components of a natural isomorphism between the two functors. This proves that the free monoid functor
is a left adjoint to the forgetful functor
.
All the other examples listed above go exactly the same way, giving left adjoints to all the forgetful functors.
As a slightly different example, we have a forgetful functor that takes an abelian group and “forgets” that it’s abelian, leaving just a group. Conversely, we can take any group
and take the quotient by its commutator subgroup
to get an abelian group. This satisfies the property that for any group homomorphism
from
to an abelian group
(considered as just a group) there is a unique homomorphism of abelian groups
. Thus it turns out that “abelianization” of a group is left adjoint to the forgetful functor from abelian groups to groups.
There are more explicit examples we’ve seen, but I’ll leave them to illustrate some particular properties of adjoints. Take note, though, that not all adjunctions involve forgetful functors like these examples have.
An adjunction between two categories can be seen as a weaker version of an equivalence. An equivalence given by functors and
tells us that both
and
are fully faithful, so
. Now let’s put
to find that
, where the last isomorphism uses the natural isomorphism
. So every equivalence is an adjunction.
Diagrammatics for braided monoidal categories with duals
I’m exhausted from spending all morning and much of the afternoon purchasing a new (to me) car. As a result, I’ll just forward you to the excellent notes that Miguel Carrión Alvarez took in John Baez’ seminar on quantum gravity back in fall and winter of 2000-1.
Specifically, pay attention to the diagrammatics. He’s talking mostly about finite-dimensional vector spaces over the field of complex numbers, but most everything applies to a general (braided) monoidal category (with duals). Also, he draws his diagrams from top to bottom, while (as I keep reminding you) I write mine from bottom to top to make it easier to read off the algebraic notation.
We’ve already seen some of the basic pieces as braid, Temperley-Lieb, and tangle diagrams, but here each arc in the diagram carries a label from the objects of a category, and usually an arrow. We can move to a dual object by reversing the arrow or changing the label.
Morphisms can be put in boxes, with the incoming object in the bottom and the outgoing one at the top. The naturality for the dual morphisms basically says we can slide a morphism up over a cup or down under a cap to get its dual. Also, often a morphism will have a number of incoming or outgoing strands, which means that the incoming object is the tensor product of the objects on the incoming strands.
A braiding is written as a crossing (lower-left over upper-right), and the inverse of the braiding is written as the other kind of crossing. Naturality means that we can pull a morphism along a strand through a crossing.
There’s a lot more to the notes than just the diagrammatics, though. If you’re up to it, I highly recommend giving it all a look. If not, just look for the pictures and read the sections around them for the explanations. I’ll be back on Monday with more exposition.
Braided Monoidal Categories with Duals
As one last example along these lines, let’s throw all these structures in together. We start with a monoidal category, and we want it to have both a braiding and duals. Naturally, they’ll have to play well together.
Now I’ll want to go back and tweak one of the things I said about duals. I insisted that the duality functor satisfy , but we can actually weaken it slightly. What I defined before we can call a “right dual”, since it provides a pairing
. Instead of insisting that
, we can put in “left duals” by hand. This will be another contravariant functor
, and arrows
and
satisfying the “mirror images” of the identities for
and
.
What does this all have to do with a braiding? Well we can use a braiding to turn a left dual into a right dual and vice versa. Let’s say we’ve got (right) dual maps and
, along with braiding maps
. Now we can define left dual maps by
and
. This will automatically satisfy the left dual axioms. You can either try to show this now using the algebra or hold off a bit until we have a better tool to attack such identities.
Okay, so a braided monoidal category with duals has a braiding and has right duals. Since we define left duals in terms of these structures they’ll automatically play well together. From these we can further build a morphism for each object called the “balancing”. It’s defined by . We call an object
“unframed” if
.
I know that there’s a lot of stuff here and it’s hard to remember it all. We need a better way to think about these things. Just like we had for braided categories and categories with duals, we have a diagrammatic rendering of the free braided monoidal category with duals on one object.
First I’ll deal with the free braided monoidal category with duals on one self-dual, unframed object. That is, we start with one object and say it’s its own (left and right) dual and for whom the balancing is the identity. Then we build all the other objects as tensor powers of this one. Then we throw in the braiding morphisms and the duality morphisms and insist they satisfy all the relevant relations. And what we get is the category of tangles. Here’s an example:

As usual we read this from bottom to top. Notice that this means we can read off the algebraic notation just by going top to bottom, left to right, to get . The unframed condition tells us that we can untwist that loop to the right and still have the same tangle.
What if we didn’t ask that our generator be unframed? Then we get the category of framed tangles, which differs only in that we can’t untwist loops like the one above. It’s like working with knot diagrams where all we can use are Reidemeister moves 2 and 3.
What if our generator is unframed, but isn’t self-dual? Then we get the category of oriented tangles. All we do now is label each strand of our tangle diagram with an orientation, like we did in the case of oriented Temperley-Lieb diagrams.
What if our generator is neither unframed nor self-dual? Then we get the category of framed, oriented tangles.
Each of these leads to a diagrammatic way of looking at the respective sorts of categories. For example, go back and take the definition of left duals in terms of right duals and write it out as a diagram of framed, oriented tangles. Then write down the condition it must satisfy as an equation between framed oriented tangles. Finally, verify that it satisfies the equation by finding a sequence of Reidemeister moves 2 and 3 from one side to the other (and invoke the definition of right duals at some point).
The category of tangles is very simply described in combinatorial and algebraic terms, but you might not yet have noticed how general it is. To illustrate this, I give with no further comment an example of a tangle from to
:

The Temperley-Lieb Category
Okay, after last week’s shake-ups I’m ready to get back into the swing of things. I mentioned yesterday something called the “Temperley-Lieb Category”, and it just so happens we’re right on schedule to explain it properly.
We’ve seen the category of braids and how the braided coherence theorem makes it the “free braided monoidal category on one object”. That is, it has exactly the structure needed for a braided monoidal category — no more, no less — and if we pick any object in another such category we get a unique functor from
to
.
So of course we want the same sort of thing for monoidal categories with duals. We’ll even draw the same sorts of pictures. A point on a horizontal line will be our generating object, but we also need a dual object. So specifically we’ll think of the object as being “going up through the point” and the dual as “going down through the point”. Then we can draw cups and caps to connect an upward line and a downward line and interpret it as a duality map. Notice, though, that we can’t make any curves cross each other because we have no braiding! Here’s an example of such a Temperley-Lieb diagram:

Again, we read this from bottom to top, and from left to right. On the bottom line we have a downward line followed by an upward line, which means we start at the object . Then we pass through a cap, which corresponds to the transformation
. Then we go through a cup (
) to get to
, and another cup to get to
. A cap in the middle (
) is followed by a cup (
), and then another pair of caps (
). Then we have a cup
and another
to end up at
.
We could simplify this a bit by cancelling two cup/cap pairs using the equations we imposed on the natural transformations and
. In fact, this is probably a much easier way to remember what those equations mean. The equations tell us in algebraic terms that we can cancel off a neighboring cup and cap, while the topology of diagram says that we can straighten out a zig-zag.
Incidentally, one feature that’s missing from this diagram is that it’s entirely possible to have an arc (pointing either way) start at the bottom of the diagram and leave at the top.
Now if we have any category with duals and an object
we can build a unique functor from the category
of oriented Temperley-Lieb diagrams to
sending the upwards-oriented line to the object
. It sends the above diagram (for example) to the morphism
.
Another useful category is the free monoidal category with duals on a single self-dual object. This is the Temperley-Lieb category which looks just the same as
with one crucial difference: since the object
is its own dual, we can’t tell the difference between the two different directions a line could go. Up and down are the same thing. In the algebra this might seem a little odd, but in the diagram all it means is we get to drop the little arrows that tell us which way to go.
And now if we have any category with duals and any self-dual object
we have a unique functor from
to
sending the strand to
. This is how Temperley-Lieb diagrams are turned into (categorified)
representations in Khovanov homology.
Categories with Duals
Now we’ve got monoidal categories to categorify the notion of a monoid, we should consider what the proper analogue of an inverse is. What we’ll do is define a “dual object”, which is sort of halfway a left inverse and halfway a right inverse.
So, we say a monoidal category “has duals” if for every object
there is a “dual object”
and natural transformations
and
. We do not ask that these be isomorphisms, since for the best examples they’re actually not.
Instead we ask that the transformations be compatible in the sense that the following equations hold:
The first one means (reading right to left) that if we create a copy of the identity on the right with , then hit it with
to create
, then associate, then hit the
on the left with
to get the identity, then remove it with
, it’s just the same as doing nothing at all! And there’s a similar interpretation of the other equation. I can hear your furiously scratching your heads and saying “huh?” right now, but I’ll come back to this with another viewpoint later.
Anyhow, we also want this duality to be a functor — a contravariant functor even — which you should have guessed when I called and
natural transformations. So we need for every
and arrow
so that
and
. There are also a naturality conditions for
and
that you should be able to write down if you think of this as a covariant functor
. The functor should also be monoidal, in the sense that
(why this form? write out the condition explicitly).
The motivating example here is the category of finite-dimensional vector spaces over a field
. Here we know that tensor product over
gives a monoidal structure, and we’ll use the dual module of linear functionals as our functor. Indeed, if we set
we clearly have a contravariant functor. We can verify that it’s monoidal in the proper sense, and that the pairing gives a natural transformation
. The other natural transformation required is also there, but we don’t yet have the tools needed (unless you’ve taken some linear algebra on your own). Still, you can keep this example in mind.
Now one thing that should be bugging you is that we have arrows and
, but there are two more it seems we should have. To handle this, we’ll insist that
— that duality “is its own inverse”, so that we can just use
and
as the other natural transformations we need. This does indeed hold in our motivating example, but we again won’t prove it completely until later.
Note that there’s no reason to assume that or
, so these still aren’t isomorphisms. If they are, though, then we really do have natural isomorphisms to replace left and right inverse rules in the definition of a group. If you’re feeling up to it, try to state (prove?) a coherence theorem that says what diagrams must commute to ensure they all do.
The Braided Coherence Theorem
I find myself up earlier than expected this morning, so I thought I’d bang out the proof I’d promised of the “coherence theorem” for braided monoidal categories.
Recall that we’re considering a braided monoidal category with underlying “ordinary category”
— the same category, just forgetting that it’s braided and monoidal. Then the statement is that the category of braided monoidal functors from
to
is equivalent to
.
To make our lives a bit easier, we’ll use the strictification theorem to pass from the (weak) monoidal category to a monoidally equivalent strict monoidal category
, with underlying category
. Now the braiding on
induces (via the equivalence) one on
. The new statement is that the category of strictly monoidal functors from
to
is isomorphic to
. Then the result we really want (about
) will follow.
One direction is easy: we take a functor and evaluate it at the object
to get an object
. A monoidal natural transformation
has, in particular, the component
, which makes “evaluate at
” a functor.
For the other direction, we’ll pick an object of
and use it to construct a strictly braided monoidal functor from
to
that sends
to
, and then show that an arrow
in
induces a natural transformation between the functors built on
and
. We’ll see that everything in sight is unique, so this construction actually provides an “on the nose” inverse functor to “evaluate at
“.
So, we’ve got an object and we set
. Then for
to be monoidal we must set
, since
is
(remember that the “tensor power” is defined just like regular exponentiation: take the tensor product of
copies of the object in question). This completely defines the functor
on objects.
Now any morphism in is an element of some braid group
. Let’s look at simply crossing the left strand over the right in
: this is
, so to have a strictly braided functor we must set
. In
, the crossings of one strand over the one to its right generate the whole group. If we cross strand
over strand
we’ll call the generator
. In terms of the category
, we can write
as
, so monoidality forces us to set
.
We do have to check that the relations of the braid group are satisfied. But if then we have
because the monoidal product in
is a functor. And we see that
because this is exactly an instance of the triangle relation for the braiding on
!
So once we pick the single object everything else about
is uniquely determined. If we have an arrow
then we must set the component
of the induced natural transformation to be
. Then monoidality forces
to be
. The construction is indeed a functor sending
to the category of strictly monoidal functors from
to
, and it is clearly inverse to evaluation at
.
The Category of Braids
Before I jet off for a week of knot homology — where I’m looking forward to seeing Scott Morrison, Jacob Rasmussen, and Ben Webster of the Secret Blogging Seminar — I thought I’d finally start tying in (sorry) this category theory stuff with knot theory.
As I said yesterday, the analogue of commutativity for a monoidal category is called a braiding. The name comes from a deep connection between braided monoidal categories and braid groups. Specifically, there is a (strict) braided monoidal category of braids: . The objects of this category are the natural numbers, and
is the group
if
and empty otherwise. We think of a braid with
strands as taking a collection of
points and shuffling them around, and we draw a diagram like this:

As a side note, I always intend diagrams like these to be read from bottom to top, though other authors go the other way.
First, the monoidal structure. We don’t need any of the structural isomorphisms because we’re making a strict monoidal structure, but we do need a bifunctor . On the objects it’s just addition. For morphisms we need a way of taking a braid with
strands and one with
strands and making a braid with
strands. We’ll just stand both of our braids next to each other like this:

Now we need a braiding. That is, for each pair of objects we need a morphism (a braid) from
to
that “commutes” with all the other morphisms. We’ll just pass the
strands from the left over the
strands from the right. Here’s what I mean for
and
:

This is natural because if we stick on a braid below the leftmost three strands on the bottom, the Reidemeister moves will let us pull it up and over the other two strands until it’s sitting on top of the three strands at the right on the top. Similarly, a braid can be pulled along the undercrossing strands. Since our monoidal structure is strict, the hexagon identities degenerate into triangles, and the proof is just the following diagram:

So we indeed have a strict braided monoidal category. It turns out to be extremely important because of the following theorem of Joyal and Street:
If
is a braided monoidal category with underlying category
(forget the monoidal structure and the braiding to just have a regular old category), then the category of braided monoidal functors from
to
is equivalent to
.
This is sort of like a coherence theorem for braided monoidal categories: for each natural isomorphism built from ,
,
, and
there is an “underlying braid”, and two such isomorphisms are equal if and only if they have the same underlying braid. I’ll defer the proof of this for now, but you should think about it a bit. The details aren’t that bad, but the basic idea just leaps out at you after a bit.