Cocones and Colimits
The limit of a diagram was built from maps running into the diagram: a vertex with a leg to each
object, the legs compatible with the edges. Reversing every one of those arrows yields a second
construction of equal standing. A vertex now sends a leg out to each object, the legs again
compatible with the edges, and the universal such vertex, the one through which every other factors,
is the colimit. Like limits, colimits occur throughout mathematics, and the whole theory is obtained
by dualizing the one already built.
The dualization is carried out once, at the level of the diagram, and every later notion follows. A
diagram \(D : \mathbf{I} \to \mathscr{A}\) has an
opposite
\(D^{\mathrm{op}} : \mathbf{I}^{\mathrm{op}} \to \mathscr{A}^{\mathrm{op}}\), the same assignment of
objects read in the categories with their arrows reversed. A cone on \(D^{\mathrm{op}}\) is, read
back in \(\mathscr{A}\), a family of maps out of the objects of \(D\) rather than into them. This is
the only definition needed. The rest is naming.
Definition: Cocone
Let \(\mathscr{A}\) be a category, \(\mathbf{I}\) a small category, and \(D : \mathbf{I} \to
\mathscr{A}\) a diagram. A cocone on \(D\) is a
cone
on \(D^{\mathrm{op}}\). Explicitly, it is an object \(A \in \mathscr{A}\), the
vertex of the cocone, together with a family of maps
\[
\big(D(I) \xrightarrow{f_I} A\big)_{I \in \mathbf{I}}
\]
in \(\mathscr{A}\), one for each object \(I\) of \(\mathbf{I}\), such that for every map
\(u : I \to J\) in \(\mathbf{I}\),
\[
f_J \circ Du = f_I .
\]
The vertex is again a single object, but the family now points away from the diagram. Each object of
the diagram is given a map into \(A\). The compatibility condition reads along the edges the other
way. Traveling first by the edge \(Du : D(I) \to D(J)\) and then by the leg \(f_J\) out of \(D(J)\)
must agree with the leg \(f_I\) out of \(D(I)\). A cocone is thus a way of mapping a whole diagram
compatibly into a single object at once. Where a cone gathers a diagram from above, a cocone
receives it from below, and among all cocones on a diagram there is, in good cases, a most efficient
one through which all others factor uniquely.
Definition: Colimit
Let \(D : \mathbf{I} \to \mathscr{A}\) be a diagram. A colimit of \(D\) is a
limit
of \(D^{\mathrm{op}}\): a cocone
\[
\big(D(I) \xrightarrow{p_I} C\big)_{I \in \mathbf{I}}
\]
with the universal property that for every cocone
\(\big(D(I) \xrightarrow{f_I} A\big)_{I \in \mathbf{I}}\) on \(D\), there exists a unique map
\(\bar{f} : C \to A\) such that \(\bar{f} \circ p_I = f_I\) for all \(I \in \mathbf{I}\). The
maps \(p_I\) are called the coprojections of the colimit.
The colimit is the universal cocone. Every cocone factors through it in exactly one way, by a unique
map running out of \(C\) where the limit's unique map ran into \(L\). When a colimit exists, the
vertex \(C\) is written \(\operatorname{colim} D\), and by the same mild abuse as before one often
calls the object \(C\) alone the colimit, leaving the coprojections understood.
Proposition: Uniqueness of Colimits
Let \(D : \mathbf{I} \to \mathscr{A}\) be a diagram. If
\(\big(D(I) \xrightarrow{p_I} C\big)_{I \in \mathbf{I}}\) and
\(\big(D(I) \xrightarrow{p'_I} C'\big)_{I \in \mathbf{I}}\) are both colimits of \(D\), then
there is a unique isomorphism \(\theta : C \to C'\) such that \(\theta \circ p_I = p'_I\) for all
\(I \in \mathbf{I}\).
Proof
The result is the
uniqueness
of limits read in \(\mathscr{A}^{\mathrm{op}}\). A direct argument is
recorded for self-containment. Since \(\big(D(I) \xrightarrow{p'_I} C'\big)\) is a cocone
on \(D\) and \(C\) is a colimit, there is a unique \(\theta : C \to C'\) with
\(\theta \circ p_I = p'_I\) for all \(I\). Symmetrically there is a unique
\(\theta' : C' \to C\) with \(\theta' \circ p'_I = p_I\) for all \(I\). Then
\((\theta' \circ \theta) \circ p_I = \theta' \circ p'_I = p_I\) for all \(I\), so
\(\theta' \circ \theta\) is a map \(C \to C\) commuting with the coprojections of \(C\).
The identity \(1_C\) is another, and the uniqueness clause of \(C\)'s universal property
forces \(\theta' \circ \theta = 1_C\). The same argument on \(C'\) gives
\(\theta \circ \theta' = 1_{C'}\), so \(\theta\) is the asserted isomorphism, unique by
its defining property.
As with limits, the requirement that \(\mathbf{I}\) be small makes the colimits defined here the
small colimits, and these are the only colimits that will concern us.
Sums, Coequalizers, Pushouts
Three shapes gave the three basic limits, and the same three shapes, with their diagrams read into
the opposite category, give the three basic colimits. A discrete shape yields the sum, the parallel
pair yields the coequalizer, and the cospan turned into a span yields the pushout. Each is named and
then identified in the familiar categories, where it takes a concrete and recognizable form.
Sums
A diagram of discrete shape is a family of objects with no edges to impose any condition, and a
cocone on it is a family of maps out of those objects into a common vertex. The universal such
cocone is the sum.
Definition: Sum
A sum, or coproduct, is a colimit over a discrete category.
For a family \((X_i)_{i \in I}\) of objects of \(\mathscr{A}\) indexed by a set \(I\), regarded
as a diagram on the discrete category with object-set \(I\), the sum is written
\(\sum_{i \in I} X_i\) or \(\coprod_{i \in I} X_i\). It is an object equipped with coprojections
\(\big(X_i \to \sum_{i \in I} X_i\big)_{i \in I}\) through which every family of maps
\(\big(X_i \to A\big)_{i \in I}\) factors uniquely. When \(I = \{1, \ldots, n\}\) is finite the
sum is written \(X_1 + \cdots + X_n\), and when \(n = 0\) it is written \(0\).
The empty case is the cleanest instance of the duality. A sum of the empty family is a colimit
of the empty diagram, whose only cocone-data is the vertex itself. Such a colimit is an
initial object,
the dual of the terminal object that the empty product gave, and writing \(0\) for the empty
sum matches the convention of writing \(0\) for an initial object, dual to the \(1\) written
for a terminal one.
Example: sums in Set
In \(\mathbf{Set}\) the sum is the
coproduct,
the disjoint union that records each element together with its origin. For two sets the
coprojections \(p_1 : X_1 \to X_1 + X_2\) and \(p_2 : X_2 \to X_1 + X_2\) are injections whose
images partition \(X_1 + X_2\). Every element of \(X_1 + X_2\) is \(p_1(x_1)\) for a unique
\(x_1 \in X_1\) or \(p_2(x_2)\) for a unique \(x_2 \in X_2\), but not both. Given any cocone,
that is, a pair of functions \(f_1 : X_1 \to A\) and \(f_2 : X_2 \to A\), the factoring map
\(\bar{f}\) is forced. It must send \(p_1(x_1)\) to \(f_1(x_1)\) and \(p_2(x_2)\) to
\(f_2(x_2)\), and the partition makes this a well-defined function, manifestly the only one
through which the cocone factors. The disjoint union thus carries exactly the universal property
of the sum.
Example: sums in Vect
For vector spaces \(X_1\) and \(X_2\) the maps \(i_1 : X_1 \to X_1 \oplus X_2\) and
\(i_2 : X_2 \to X_1 \oplus X_2\) given by \(i_1(x_1) = (x_1, 0)\) and \(i_2(x_2) = (0, x_2)\)
exhibit the direct sum \(X_1 \oplus X_2\) as a sum. Any pair of linear maps \(f_1 : X_1 \to A\),
\(f_2 : X_2 \to A\) factors through the map \(\bar{f}(x_1, x_2) = f_1(x_1) + f_2(x_2)\), which
is the unique linear map with \(\bar{f} \circ i_1 = f_1\) and \(\bar{f} \circ i_2 = f_2\). The
direct sum is therefore the binary sum in \(\mathbf{Vect}_k\).
The direct sum \(X_1 \oplus X_2\) was already seen to be the
product
of \(X_1\) and \(X_2\), and it is now seen to be their sum as well. In \(\mathbf{Vect}_k\), then,
the product and the sum of two objects coincide. This is a feature of \(\mathbf{Vect}_k\) and
categories like it, not a general law, and it reflects the special circumstance that a finite
product of vector spaces carries canonical inclusions as well as canonical projections. In
\(\mathbf{Set}\) the product \(X_1 \times X_2\) and the sum \(X_1 + X_2\) are entirely different.
One is a set of pairs, the other a tagged union.
In a poset the two come apart as well. The
meet
\(x_1 \wedge x_2\) was the product, and dually the sum of \(x_1\) and \(x_2\) is their least upper
bound, or join, written \(x_1 \vee x_2\), which is generally distinct from the meet. The join of a
family \((x_i)_{i \in I}\) is written \(\bigvee_{i \in I} x_i\). A join of the empty family is an
initial object of the poset, which is a least element: an element \(0\) with \(0 \le a\) for every
\(a\). The real line under its order has the supremum as the join of a family bounded above, and no
least element. A power set under inclusion has union as join and the empty set as least element. The
positive integers ordered by divisibility have least common multiple as the join of a finite family,
and \(1\) as least element, since \(1\) divides everything.
Coequalizers
Where the equalizer of \(s, t : X \to Y\) was the universal map into \(X\) equalizing the pair, the
coequalizer is the universal map out of \(Y\) coequalizing it.
Definition: Coequalizer
A coequalizer is a colimit over the parallel-pair shape. Given a diagram
\(s, t : X \to Y\), a coequalizer of \(s\) and \(t\) is a map \(p : Y \to C\) satisfying
\(p \circ s = p \circ t\) and universal with this property: for every map \(q : Y \to A\) with
\(q \circ s = q \circ t\) there is a unique \(\bar{q} : C \to A\) with \(\bar{q} \circ p = q\).
It is the dual of the
equalizer.
Coequalizers turn out to be a categorical form of quotient. To identify the coequalizer in
\(\mathbf{Set}\) one needs the construction of the smallest equivalence relation containing a given
relation. For a binary relation \(R\) on a set \(A\), viewed as a subset \(R \subseteq A \times A\),
there is a smallest equivalence relation \(\sim\) containing \(R\), the equivalence relation
generated by \(R\), in the sense that any equivalence relation containing \(R\)
also contains \(\sim\).
The generated relation may be obtained as the intersection of all equivalence relations containing
\(R\), since an intersection of equivalence relations is again one. Alternatively, it can be
constructed explicitly, by first symmetrizing \(R\) to
\(S = \{(a, a') \mid (a, a') \in R \text{ or } (a', a) \in R\}\) and then declaring \(a \sim a'\)
when there is a finite chain
\[
a = a_0, \quad a_n = a', \quad (a_{k-1}, a_k) \in S \text{ for } k = 1, \ldots, n ,
\]
a zigzag of related steps joining \(a\) to \(a'\). The chains of length zero supply reflexivity,
concatenation supplies transitivity, and the symmetry of \(S\) is preserved, so \(\sim\) is an
equivalence relation. The relation \(\sim\) is the smallest one containing \(R\) because any
equivalence relation containing \(R\) contains \(S\) and is closed under such chains.
The universal property of a quotient by an equivalence relation is what makes the coequalizer come
out as a quotient. For an equivalence relation \(\sim\) on a set \(A\), the quotient map
\(p : A \to A/{\sim}\) onto the set of equivalence classes is surjective and satisfies
\(p(a) = p(a') \iff a \sim a'\). For any set \(B\), the functions \(A/{\sim} \to B\) correspond
bijectively, by composition with \(p\), to the functions \(f : A \to B\) that respect \(\sim\), in
the sense that \(a \sim a'\) implies \(f(a) = f(a')\).
When \(\sim\) is generated by a relation \(R\), respecting \(\sim\) is the same as respecting \(R\)
alone. If \(f(a) = f(a')\) for all \((a, a') \in R\), then \(f(a) = f(a')\) for all \(a \sim a'\),
since the relation \(\{(a, a') \mid f(a) = f(a')\}\) is an equivalence relation containing \(R\) and
hence containing \(\sim\). This reduction of "respects \(\sim\)" to "respects \(R\)" is exactly the
cocone condition for a coequalizer.
Example: coequalizers in Set
Given \(s, t : X \to Y\) in \(\mathbf{Set}\), let \(\sim\) be the equivalence relation on \(Y\)
generated by the relation \(R = \{(s(x), t(x)) \mid x \in X\}\), and take the quotient map
\(p : Y \to Y/{\sim}\). Then \(p \circ s = p \circ t\), since \(s(x) \sim t(x)\) for every
\(x \in X\) by construction. For any \(q : Y \to A\) with \(q \circ s = q \circ t\), the map
\(q\) respects \(R\) and so respects \(\sim\), hence factors uniquely as \(q = \bar{q} \circ p\)
through the quotient. Thus \(p : Y \to Y/{\sim}\) is the coequalizer of \(s\) and \(t\). The
quotient map glues together exactly the pairs \(s(x), t(x)\) and nothing more.
Example: coequalizers in Ab
For a parallel pair of homomorphisms \(s, t : A \to B\) of abelian groups, the difference
\(t - s : A \to B\) is a homomorphism, and its image \(\operatorname{im}(t - s)\) is a subgroup
of \(B\). The coequalizer of \(s\) and \(t\) is the canonical quotient homomorphism
\(B \to B/\operatorname{im}(t - s)\). A homomorphism \(q : B \to A'\) satisfies
\(q \circ s = q \circ t\) exactly when \(q \circ (t - s) = 0\), that is when
\(\operatorname{im}(t - s) \subseteq \ker q\), which is precisely the condition for \(q\) to
factor through the quotient by \(\operatorname{im}(t - s)\). The factoring is unique because the
quotient map is surjective.
Pushouts
The cospan that gave the pullback becomes, with its arrows reversed, a span, and the colimit over it
is the pushout.
Definition: Pushout
A pushout is a colimit over the span shape
\(\bullet \leftarrow \bullet \to \bullet\). Given a span
\[
Y \xleftarrow{s} X \xrightarrow{t} Z ,
\]
a pushout is a commutative square
\[
\begin{array}{ccc}
X & \xrightarrow{s} & Y \\[4pt]
{\scriptstyle t}\big\downarrow & & \big\downarrow{\scriptstyle p_1} \\[4pt]
Z & \xrightarrow{p_2} & P
\end{array}
\]
with coprojections \(p_1 : Y \to P\) and \(p_2 : Z \to P\), universal among such squares: for
every object \(A\) and maps \(f_1 : Y \to A\), \(f_2 : Z \to A\) with
\(f_1 \circ s = f_2 \circ t\), there is a unique map \(\bar{f} : P \to A\) with
\(\bar{f} \circ p_1 = f_1\) and \(\bar{f} \circ p_2 = f_2\). A pushout in \(\mathscr{A}\) is a
pullback in
\(\mathscr{A}^{\mathrm{op}}\).
Example: pushouts in Set
For a span \(Y \xleftarrow{s} X \xrightarrow{t} Z\) in \(\mathbf{Set}\), the pushout is
\(P = (Y + Z)/{\sim}\), where \(\sim\) is the equivalence relation on the sum \(Y + Z\)
generated by \(s(x) \sim t(x)\) for all \(x \in X\). The coprojection \(Y \to P\) sends an
element to its class, and similarly for \(Z \to P\). The construction places \(Y\) and \(Z\)
side by side and then glues each \(s(x)\) to the corresponding \(t(x)\).
When \(Y\) and \(Z\) are subsets of a common set \(A\) and \(X = Y \cap Z\) with \(s, t\) the
inclusions, the pushout is the union \(Y \cup Z\). The square with corners \(Y \cap Z\),
\(Y\), \(Z\), \(Y \cup Z\) is a pushout square, which glues \(Y\) and \(Z\) along their
overlap. In \(\mathbf{Set}\) this same square is also a pullback, a coincidence that need not
hold in a general category.
The pushout subsumes the sum as a degenerate case. If \(\mathscr{A}\) has an initial object \(0\),
then for objects \(Y, Z\) the span \(Y \leftarrow 0 \to Z\) is determined by \(Y\) and \(Z\), the
maps out of \(0\) being unique, and its pushout is exactly the sum \(Y + Z\). With nothing to glue,
the two objects are merely placed side by side. The pushout is thus to the sum what the pullback was
to the product, a construction over a base that reduces to the unbased one when the base is initial.
Gluing spaces and the van Kampen theorem
The pushout is the categorical form of gluing, and it travels into topology through the
fundamental
group. A space assembled from two open pieces overlapping in a third is a pushout
square in the category of spaces, the overlap mapping into each piece. The van Kampen theorem
concerns what happens when the fundamental group is applied to such a square, replacing each
space by its fundamental group and each map by the induced homomorphism. Under suitable
hypotheses on the pieces and their overlap, the result is a pushout square of groups. The
fundamental group of a space built by gluing is therefore computed by gluing the fundamental
groups of its pieces, the gluing being a pushout in both settings. This is one of the principal
tools for computing fundamental groups, and it is a statement that a particular construction is
carried from one category to another.
Colimits in Set
The limit of a set-valued diagram was a subset of a product, cut out by the compatibility
conditions. The colimit is the mirror construction: a quotient of a sum, with the compatibility
conditions imposed by gluing rather than by selection. Before stating the general formula one more
shape is worth naming, dual to the inverse limit met among limits.
A diagram \(D : (\mathbb{Z}_{\geq 0}, \le) \to \mathscr{A}\) on the non-negative integers in their
usual order is a sequence of objects and maps
\[
X_0 \xrightarrow{s_1} X_1 \xrightarrow{s_2} X_2 \xrightarrow{s_3} \cdots
\]
running forward. Colimits of such diagrams are traditionally called direct limits,
the dual of the inverse limits that ran backward. The older terms are made redundant by the general
words colimit and limit, but remain in wide use and are worth recognizing.
Proof
For any set \(A\), the functions out of the quotient, \(\big(\sum_{I} D(I)\big)/{\sim} \to A\),
correspond bijectively with the functions \(f : \sum_{I} D(I) \to A\) that respect \(\sim\).
Since \(\sim\) is generated by the relations \(x \sim (Du)(x)\), respecting \(\sim\) is the
same as the condition \(f(x) = f\big((Du)(x)\big)\) for all \(u : I \to J\) and all
\(x \in D(I)\), by the reduction of "respects \(\sim\)" to "respects the generating relation"
used for coequalizers.
A function on the sum is a family of functions
\(\big(D(I) \xrightarrow{f_I} A\big)_{I \in \mathbf{I}}\), one on each summand, and the
condition \(f(x) = f((Du)(x))\) reads on the summands as \(f_I(x) = f_J\big((Du)(x)\big)\),
namely \(f_I = f_J \circ Du\) for every \(u : I \to J\). This is exactly the condition that the
family be a cocone on \(D\) with vertex \(A\). Maps out of the quotient therefore correspond
bijectively, and naturally in \(A\), with cocones on \(D\). The quotient with its coprojections
is thus the universal cocone, that is, the colimit.
Selection against gluing is the whole of the difference between the limit and colimit formulas in
\(\mathbf{Set}\), and it accounts for the difference in flavor that the two constructions carry
wherever they appear.
A geometric instance makes the contrast tangible. The sphere \(S^2\) may be presented in either way.
As a subset of Euclidean space it is \(\{(x, y, z) \in \mathbb{R}^3 \mid x^2 + y^2 + z^2 = 1\}\), a
subspace of the product \(\mathbb{R}^3 = \mathbb{R} \times \mathbb{R} \times \mathbb{R}\), and so a
limit. Precisely, it is the equalizer of the two maps \(s, t : \mathbb{R}^3 \to \mathbb{R}\) given
by \(s(x, y, z) = x^2 + y^2 + z^2\) and \(t(x, y, z) = 1\). Alternatively, \(S^2\) is two open disks
glued along an annulus, the quotient of the sum of two copies of the open disk \(\mathbb{D}\), and
so a colimit. As a coequalizer it is
\[
S^1 \times (0, 1) \rightrightarrows \mathbb{D} + \mathbb{D} \longrightarrow S^2 ,
\]
where the annulus \(S^1 \times (0, 1)\) is the overlap of the two disks and the two maps are the
inclusions of that overlap into each copy.
The two viewpoints have different strengths. The limit presentation fixes an arbitrary choice of
coordinate system, embedding the space in an ambient product. The colimit presentation instead
fixes a decomposition into pieces, which is equally arbitrary. In geometry the colimit viewpoint is
often preferred, since a space is more naturally regarded as built from standard pieces than as
carved out of a coordinate space. An atlas of charts, for instance, presents a manifold as a
colimit of Euclidean pieces.
The deeper reason is structural. One is frequently concerned with maps out of a space, and
a map out of a colimit is exactly a compatible family of maps out of its pieces, which is what the
definition of colimit delivers. The dual constructions are no longer dual in their convenience once
a direction of mapping is fixed.
Epics
One notion from the limit side remains to be dualized. The monic, defined by left-cancellability and
introduced alongside the pullback, has a dual defined by right-cancellability, which was set aside
until limits had been developed in full. The dual is obtained, as always, by reversing every arrow.
Definition: Epic
Let \(\mathscr{A}\) be a category. A map \(f : X \to Y\) is epic (or an
epimorphism) if for all objects \(Z\) and all maps \(g, g' : Y \to Z\),
\[
g \circ f = g' \circ f \implies g = g' .
\]
This is the formal dual of the
monic
condition. An epic in \(\mathscr{A}\) is exactly a monic in \(\mathscr{A}^{\mathrm{op}}\). Epics
are right-cancellable, where monics are left-cancellable.
Where monic was the categorical form of injectivity, epic is in some sense the categorical form of
surjectivity. But the resemblance is looser. The monic condition closely mirrors the elementwise
definition of injectivity, while the epic condition does not mirror the definition of surjectivity
in the same way, and the examples below bear this out. In categories where surjectivity makes sense,
epic is only sometimes the same as surjective.
Example: epics in Set
In \(\mathbf{Set}\) a map is epic if and only if it is surjective. A surjection is certainly
epic, since two functions agreeing on all of the image of \(f\) agree everywhere \(f\) reaches,
which is all of \(Y\).
For the converse, suppose \(f : X \to Y\) is not surjective. Take \(Z\) to be a two-element set
\(\{\texttt{true}, \texttt{false}\}\). Let \(g : Y \to Z\) be the characteristic function of the
image of \(f\), which sends the image to \(\texttt{true}\) and the rest of \(Y\) to
\(\texttt{false}\), and let \(g'\) be the constant function with value \(\texttt{true}\). Then
\(g \circ f = g' \circ f\), both constant at \(\texttt{true}\) on \(X\), yet \(g \ne g'\)
because \(f\) misses some point of \(Y\), where the two disagree. So a non-surjection is not
epic, and epic coincides with surjective.
Any isomorphism in any category is both monic and epic. In \(\mathbf{Set}\) the converse holds as
well, a map that is both monic and epic being both injective and surjective, hence invertible. In
general, however, monic and epic together fall short of isomorphism, and the next examples show
epic itself parting from surjective.
Example: epics in categories of algebras
In categories of algebraic structures any surjective homomorphism is epic. The converse holds in
some of them, so that epic means surjective. This is the case in \(\mathbf{Ab}\) and
\(\mathbf{Vect}_k\), where the argument is direct, and in \(\mathbf{Grp}\), where it is true but
considerably harder to prove.
In other categories of algebras the converse fails. In \(\mathbf{Ring}\), whose maps are ring
homomorphisms sending \(1\) to \(1\), the inclusion \(\mathbb{Z} \hookrightarrow \mathbb{Q}\)
is epic but not surjective. A ring homomorphism out of \(\mathbb{Q}\) is determined by its
values on \(\mathbb{Z}\), since the value at \(1/n\) is forced to be the inverse of the value
at \(n\), so two homomorphisms agreeing on \(\mathbb{Z}\) agree on \(\mathbb{Q}\). This same
inclusion is monic, being injective, and so is a map that is both monic and epic without
being an isomorphism.
Example: epics in Haus
In the category of Hausdorff topological spaces and continuous maps, a map with dense image is
epic. Two continuous maps into a Hausdorff space that agree on a dense subset agree everywhere,
since the set on which they agree is closed and contains a dense set. A map whose image is dense
is therefore right-cancellable. Here epic is strictly weaker than surjective, a dense proper
subset giving a non-surjective epic.
The characterization of monics by pullback squares dualizes too. Just as a monic was recognized by a
pullback square built from its identity maps, an epic is recognized by the mirror-image pushout
square, and the result dualizes the
pullback
characterization.
Lemma: Epics as Pushouts
A map \(f : X \to Y\) is epic if and only if the square
\[
\begin{array}{ccc}
X & \xrightarrow{f} & Y \\[4pt]
{\scriptstyle f}\big\downarrow & & \big\downarrow{\scriptstyle 1_Y} \\[4pt]
Y & \xrightarrow{1_Y} & Y
\end{array}
\]
is a pushout.
Proof
The square commutes, both composites being \(f\). A cocone on the span
\(Y \xleftarrow{f} X \xrightarrow{f} Y\) with vertex \(Z\) is a pair of maps \(g, g' : Y \to Z\)
with \(g \circ f = g' \circ f\). Since the square's coprojections are both \(1_Y\), a map
\(h : Y \to Z\) factors the cocone exactly when \(h = g\) and \(h = g'\). The pushout property
is that each such pair admits a unique such \(h\).
If \(f\) is epic, right-cancellability gives \(g = g'\) for every compatible pair, so \(h = g\)
is the unique factoring map and the square is a pushout. Conversely, if the square is a pushout,
then any \(g, g'\) with \(g \circ f = g' \circ f\) form a cocone, and the existence of an \(h\)
with \(h = g\) and \(h = g'\) forces \(g = g'\). Thus \(f\) is right-cancellable, hence epic.
The value of the characterization is, as on the limit side, that it transfers facts about pushouts
to facts about epics. A construction or functor known to respect pushouts carries epics to epics.
With the colimit and its three constructions in hand, and the dual of the monic accounted for, the
two universal constructions of arbitrary shape stand complete and dual to one another. Each is
defined for every diagram, unique up to compatible isomorphism when it exists, and exhibited in
the familiar categories.