It starts with very elementary and simple examples and eventually passes to more sophisticated ones.
For examples of the other universal constructions see
The terminal object is the limit of the empty functor . So a terminal object of is a set such that there is a unqiue function from any set to . This is given by any singleton set , where the unique function from any set is the function that sends every element in to .
Given two sets , the categorical product is the limit of the diagram (with no non-trivial maps)
This is given by the usual product of sets, which can be constructed as the set of Kuratowski pairs?
We tend to write instead of .
The projection maps and are given by
To see this satisfies the universal property of products, given any pair of maps and , we obtain a map given by
More generally, given a (possibility infinite) collection of sets , the product of the discrete diagram consisting of these sets is the usual product . This can be constructed as
Given a pair of functions , the equalizer is the limit of the diagram
The limit is given by a map such that given any , it factors through if and only if . In other words, factors through if and only if . Thus the limit of the diagram is given by
and the map is given by the inclusion.
Given two maps and , the pullback is the limit of the diagram
This limit is given by
with the maps to and given by the projections.
While the definition of a pullback is symmetric in and , it is usually convenient to think of this as pulling back along (or the other way round). This has more natural interpretations in certain special cases.
If is the inclusion of a subset (ie. is a monomorphism), then the pullback of along is given by
So this is given by restricting to the elements that are mapped into .
Further, if is also the inclusion fo a subset, so that and are both subobjects of , then the above formula tells us that the pullback is simply the intersection of the two subsets.
Alternatively, we can view the map as a collection of sets indexed by elements of , where the set indexed by is given by . Under this interpretation, pulling back along gives a collection of sets indexed by elements of , where the set indexed by is given b .
Given a general Set-valued functor , if the limit exists, then by definition, for any set , a function is equivalent to a compatible family of maps for each .
In particular, since an element of a set bijects with maps from the singleton , we have
where is the functor that constantly takes the value . Thus the limit is given by the set of natural transformations from to .
More concretely, a compatible family of maps is given by an element for each , satisfying the appropriate compatibility conditions. Thus, the limit can be realized as a subset of the product of all objects:
The initial object in is a set such that there is a unique map from to any other set. This is given by the empty set .
The colimit over a Set-valued functor is a quotient set of the disjoint union :
where the equivalence relation is that which is generated by
If is a filtered category then the relation already is an equivalence relation.
In the following examples, is a small category, is any category and the limit is taken over a functor .
if then is the equalizer of the two morphisms .
if is a poset, then the limit over is the supremum over the with respect to ;
the generalization of this is where the term “limit” for categorical limit (probably) originates from: for a filtered category, hence a cofiltered category, one may think of as witnessing that is “larger than” in some sense, and is then the “largest” of all these objects, the limiting object. This interpretation is perhaps more evident for filtered colimits, where the codomain category is thought of as being the opposite . See the motivation at ind-object.
See the explicit formula for the limit in Set in terms of a subset of a product set.
In particular therefore, a category has all limits already if it has all products and equalizers.
Limits of presheaves are computed objectwise:
Here on the right the limit is over the functor .
Similarly for colimits
Similarly colimits of presheaves are computed objectwise.
The Yoneda embedding commutes with small limits:
Let , then we have
Warning The Yoneda embedding does not in general preserve colimits.
Limits in under categories are a special case of limits in comma categories. These are explained elsewhere. It may still be useful to spell out some details for the special case of under-categories. This is what the following does.
Limits in an under category are computed as limits in the underlying category.
and is uniquely characterized by .
Over a morphism in the limiting cone over (which exists by assumption) looks like
By the universal property of the limit this has a unique lift to a cone in the under category over :
It therefore remains to show that this is indeed a limiting cone over . Again, this is immediate from the universal property of the limit in . For let be another cone over in , then is another cone over in and we get in a universal morphism
A glance at the diagram above shows that the composite constitutes a morphism of cones in into the limiting cone over . Hence it must equal our morphism , by the universal property of , and hence the above diagram does commute as indicated.
This shows that the morphism which was the unique one giving a cone morphism on does lift to a cone morphism in , which is then necessarily unique, too. This demonstrates the required universal property of and thus identifies it with .
Pedagogical vidoes that explain limits and colimits are at
More on the inner workings of this program is at Paine on a Category Theory Demonstrations program
the following discussion originated from an earler version of this entry
Todd Trimble: So far, this is a really good article. However, I would not say in this last line “if either limit exists”, because small limits on the right certainly exist always since is complete; instead, “if exists”.
Urs: thanks, Todd, I have changed the above now accordingly. Please don’t hesitate to correct and/or improve things you see as needed.
By the way, I am not completely happy with this entry as yet. It was originally motivated from the desire to explain in small steps the computation of limits and colimits to those readers unfamiliar with it. Currently this here mostly just lists results, where maybe we would eventually want to include also pedagocial proofs.
The material below “explanation for programmers” goes more in that pedagogical direction, though I’d think eventually it would be good to also have the kind of pedestrian explanation given there but without (at first) its realization in Python! :-)
an earlier version of this entry, which contained the material now branched off at Paine on a Category Theory Demonstrations program, led to the following discussion
Urs Schreiber: sorry to say this, but I am not so happy with the following material here at this particular entry. This entry here is supposed to explain limits and colimits. Originally I thought that the computer program described below should be used here to help explain limits and colimits. For instance by using its graphical output for illustration purposes. But instead the material below explains how to write that program . That may be of interest, too, but here at this entry it seems a bit of a distraction. Could we move the following material to its seperate entry?
Toby: I would agree that the material on how to write the program would work well in a separate entry, say programming coproducts?. On the other hand, you definitely want to keep the first two lines here; they do just what you want and could be expanded on here.