Limits and Colimits
One of the big tools in category theory is the limit of a functor. In fact, depending on the source category, limits give whole families of useful constructions, including (multiple) equalizers, (multiple) products, (multiple) pullbacks, and more we haven’t talked about yet. The dual notion of a colimit similarly generalizes (multiple) coequalizers, (multiple) coproducts, (multiple) pushouts, and so on.
Given a functor the limit of
(if it exists) is a couniversal cone on
— a terminal object in the comma category
. That is, it consists of an object
and arrows
for each object
, and for any other object
with arrows
there is a unique arrow
with
for all
. We often write
to denote the limit of the functor
from the category
. As usual, limits are unique up to isomorphism.
Dually, the colimit of (if it exists) is a universal cocone on
— an initial object in the comma category
. It’s given by an object
and arrows
so that for any other object
and arrows
there is a unique arrow
with
for all
. We often write
to denote the colimit of the functor
from the category
.
If is a set — a category with only identity arrows — then a functor from
to
is a collection of objects of
, one for each element of
. The limit of this functor is the product of these objects, and the colimit is their coproduct.
If consists of two objects with a set of parallel arrows from one to the other, then a functor from
to
is a collection of parallel morphisms in
. The limit of this functor is the equalizer of the collection, and the colimit is their coequalizer.
Check for yourself that limits over the category are pullbacks, while colimits over the category
are pushouts.
If the category has an initial object
then we have a unique arrow
for every object
. Now for any functor
we see that
. Indeed, we can just use
for the required arrows, which are compatible with all the other arrows from
because
is a functor. Any other cone on
must have an arrow
, and compatibility requires that any other arrow
in the cone is the composition
. So if
has an initial object then limits are trivial.
The interesting case is when does not have an initial object. We can add a new object to
with a unique arrow to every other object, getting a category
which does have an initial object. The question is whether a given functor
can be extended to a functor
. If it can, then the image of the new initial object is the vertex of a cone on
. If there is a couniversal such extension, that’s the limit of
.
Dually, if has a terminal object
then
. If
doesn’t have a terminal object, we can add one to get a category
, and colimits tell us when and how we can extend a functor
“universally” to a functor
.
If there exists a limit in for any functor from a finite category
we say that
“has finite limits”. If there exists a limit for any functor from a small category
we say that
is “complete”. The dual conditions are that
“has finite colimits” and that
is “cocomplete”, respectively.