nLab
pushout

The idea

In the category Set a ‘pushout’ is a quotient of the disjoint union of two sets. Given a diagram of sets and functions like this:

C f g A B\array{ &&&& C &&&& \\ & && f \swarrow & & \searrow g && \\ && A &&&& B }

the ‘pushout’ of this diagram is the set X obtained by taking the disjoint union A+B and identifying aA with bB if there exists xC such that f(x)=a and g(x)=b (and all identifications that follow to keep equality an equivalence relation).

This construction comes up, for example, when C is the intersection of the sets A and B, and f and g are the obvious inclusions. Then the pushout is just the union of A and B.

Note that there are maps i A:AX, i B:BX such that i A(a)=[a] and i B(b)=[b] respectively. These maps make this square commute:

C f g A B i A i B X \array{ &&&& C &&&& \\ & && f \swarrow & & \searrow g && \\ && A &&&& B \\ & && {}_{i_A}\searrow & & \swarrow_{i_B} && \\ &&&& X &&&& }

In fact, the pushout is the universal solution to finding a commutative square like this. In other words, given any commutative square

C f g A B j A j B Y \array{ &&&& C &&&& \\ & && f \swarrow & & \searrow g && \\ && A &&&& B \\ & && {}_{j_A}\searrow & & \swarrow_{j_B} && \\ &&&& Y &&&& }

there is a unique function h:YX such that

hj A=i Ah j_A = i_A

and

hj A=i B.h j_A = i_B .

Since this universal property expresses the concept of pushout purely arrow-theoretically, we can formulate it in any category. It is, in fact, a simple special case of a colimit.

Definition

A pushout is a colimit of a diagram like this:

c f g a b\array{ &&&& c &&&& \\ & && f \swarrow & & \searrow g && \\ && a &&&& b }

Such a diagram is called a span. If the colimit exists, we obtain a commutative square

c f g a b i a i b x \array{ &&&& c &&&& \\ & && f \swarrow & & \searrow g && \\ && a &&&& b \\ & && {}_{i_a}\searrow & & \swarrow_{i_b} && \\ &&&& x &&&& }

and the object x is also called the pushout. It has the universal property already described above in the special case of the category Set.

Note that the concept of pushout is dual to the concept of pullback: that is, a pushout in C is the same as a pullback in C op.