Before defining limits, it is useful to define the auxiliary notion of
a **cone of a functor**. Therefore consider two categories *J* and *C*
and a covariant functor *F* : *J*`->` *C*. A *cone* of *F*
is an object *L* of *C*, together with a family of morphisms
φ_{X} : *L* `->` *F*(*X*) for every
object *X* of *J*, such that for
every morphism *f* : *X* `->` *Y* in *J*, we have
*F*(*f*) o φ_{X} = φ_{Y}. This situation
may be depicted as a commutative diagram, more precisely as a
commutative triangle with the vertices *L*, *F*(*X*), and *F*(*Y*).
Indeed the (usually infinite) collection of all these triangles can
be (partially) depicted in the shape of a cone with the point *L*.

A *limit* of a functor is just a *universal cone*. In detail, a cone
(*L*, φ_{X}) of a functor *F* : *J*`->` *C* is a limit of that functor iff
for any cone (*N*, ψ_{X}) of *F*, there exists *precisely one* morphism *u* : *N* `->` *L* such that φ_{X} o *u* = ψ_{X} for all *X*.
We may say that the morphisms ψ_{X} factor through *L* with
the unique factorization *u*.

As for every universal property, this definition describes a balanced state
of generality: The limit object *L* has to be general enough to allow any other cone to factor through it; on the other hand, *L* has to be sufficiently specific, so that only *one* such factorization is possible for every cone.

It is possible that a functor does not have a limit at all. However, if a functor
has two limits then there exists a *unique* isomorphism between the respective
limit objects which commutes with the respective cone maps; this isomorphism is given by the unique factorization from one limit to the other.
Thus limits are unique up to isomorphism and can be denoted by lim *F*.

**Products**. If *J'\' is a discrete category, i.e. if *J'' has only the identity
morphisms, then the functor *F* is essentially nothing but a family of objects of *C*, indexed by *J*. The limit *L* of *F* is called the product of these objects.
The special case where *J* consists of just two objects (which we will call *1* and *2*)
then defines a *binary product*. For example, assume that *C* is the category **Set**
and let *J* be the discrete two-element category. The binary product *L* will then
just be the cartesian product *F*(*1*) x *F*(*2*) in **Set**. The morphisms
φ_{1} and φ_{2} are the projections to the respective
components of the tuples from *L*.

In many algebraic contexts, such as (abelian) groups, rings , boolean algebras, etc., products are just cartesian products, where the operations are defined pointwise.

Another well-known product is the product topology in **Top**, the category of topological spaces and continuous maps.

If a
partially ordered set is viewed as a category *C*, then products in *C*
are greatest lower bounds while arbitrary cones are just lower bounds. .

**Terminal object**. If *J* is the empty category that contains no objects, then
clearly the above definitions imply that every object of *C* is a cone of *F*.
A limit then is an object that has a unique factorization through any other object. This
is just the definition of a terminal object.

**Equalizers**. If *J* is a two-object category with two parallel morphisms from
object *1* to object *2* then the limit *L* is called an equalizer. Practical
examples of these constructions are considered in the article on equalizers.

**Kernels**. The special case of an equalizer where one of the morphisms is mapped
to a zero morphism, the resulting limit is called a
kernel.

**Pullbacks**. Let *J* be a category with the three elements *a*, *b* and *c*,
where the only non-identity morphisms are *f* : *a* `->` *c* and
*g* : *b* `->` *c*. The limit *L* is then called a pullback or a
*fibred product*. It can nicely be visualized as a commutative square, with the diagonal
φ_{c} = *F*(*f*) o φ_{a} =
*F*(*g*) o φ_{b}.

All of the above examples follow a common scheme for the definition of limits: in
order to model a limit construction, such as a product of sets, one uses a functor
that "picks out" the relevant objects (and sometimes morphisms) from the category *C*.
Consequently, the category *J* usually is small and has fewer elements than the
category *C*. If one considers a finite category *J* then the above
constructions can also be specified by giving the objects and morphisms that the functor
*F* maps to. For example one may talk about an "equalizer of two morphisms" instead of
calling this limit an "equalizer of a functor that maps the only two non-trivial morphisms in *J* to certain values".

However, *J* may well be a large category, i.e. one that has a proper class of objects. For example, the product of *all* sets exists and is just the
empty set (indeed, this is the only possible cone on all families of sets that contain
the empty set).

A category *C* is called
**complete** iff every functor *F* : *J*`->` *C*, where *J* is any small category, has a limit. For short: "all small limits in *C* exist".
Many important categories
are complete: groups, abelian groups, sets, modules
over some ring, topological spaces and compact
Hausdorff spaces.
The **Existence Theorem for Limits** states that a category is complete iff
it has equalizers and arbitray (infinite) products.

Typical examples of categories that are not complete are categories with some "size restriction": the category of finite groups or the category of finite-dimensional vector spaces over a fixed field.

It turns out that the property of having *all* (even large) limits is too strong
to be practically relevant. Any category with this property necessarily is of a
very restricted form: for any two objects there can be at most one morphism from
one object to the other.

If *J* is a small category and *every* functor from *J* to *C* has a limit,
then the limit operation forms a functor from the
functor category *C ^{J}* to

The importance of adjoint functors lies in the fact that every functor which
*has* a left adjoint (and therefore *is* a right adjoint) is continuous.
In the category **Ab** of abelian groups, this for example shows that the
kernel of a product of homomorphisms is naturally
identified with the product of the kernels. This illustrates that one may also
say that a continuous functor *commutes* with the construction of limits.

Being a universal construction, limits also have other strong relationships to
adjoint functors. The limit functor lim : *C ^{J}*

Examples of colimits are given by the dual versions of the ones given above: coproducts, initial objects, coequalizers, cokernels, and pushouts, respectively.

Limits and colimits are related as follows: A functor *F* : *J*
`->` *C* has a colimit if and only if for every object *N*
of *C*, the functor *X* `|->`
Mor_{C}(*F*(*X*),*N*) (which is a covariant functor
on the dual category *J*^{op}) has a limit. If that is the
case, then

- Mor
_{C}(colim*F*,*N*) = lim Mor_{C}(*F*(-),*N*)

The category *C* is called *cocomplete* if every functor
*F* : *J* `->` *C* with small *J* has a colimit.
The following categories are cocomplete: sets, groups, abelian groups,
modules over some ring and topological spaces.

A covariant functor that commutes with the construction of colimits is said to
be *cocontinuous* or to *preserve colimits*. Every functor which has a right
adjoint (and hence is a left adjoint) is cocontinuous.

As an example in the
category **Grp** of groups the functor *F* : **Set** `->` **Grp**
which assigns to every set *S* the free group over *S* has a right
adjoint (the forgetful functor **Grp** `->` **Set**) and is
therefore cocontinuous.
The free product of groups is an example of a colimit construction, and it follows that the free product of a family of free groups is free.