---
title: Products and Coproducts
module: Universal Properties and Basic Constructions
moduleNumber: 2
lessonNumber: 2
order: 202
summary: >
  The product of two objects is a wedge of projections through which every
  other wedge factors uniquely; the coproduct is the dual, built from
  injections. In Set these are the cartesian product and the disjoint union,
  in a poset the meet and join, and in abelian groups the two coincide. The
  mediating-arrow discipline established here is the template for all limits.
topics: [Universal Properties and Basic Constructions]
sources:
  - book: Simmons
    ref: "Ch. 2 §2.5 — Products and coproducts; wedges and mediators"
  - book: Barr & Wells
    ref: "Ch. 5 §5.1–5.4 — The product of two objects; notation and properties; finite products; sums"
  - book: Leinster
    ref: "§5.1–5.2 — products and sums as limits and colimits; examples"
draft: false
---

The cartesian product $A \times B$ of two sets carries two projections,
$(a,b) \mapsto a$ and $(a,b) \mapsto b$. Category theory defines the product
from these projections and a universal property they satisfy, rather than from
the ordered pairs. Stated arrow-theoretically, the definition transplants
without change into groups, spaces, posets, and categories where "ordered pair
of elements" means nothing, and it dualizes, producing the coproduct — a
construction whose concrete instances (disjoint unions, free products, direct
sums) look nothing alike until the common property is isolated.[^simmons-25]

## Wedges

Fix a category $\mathscr{C}$ and a pair of objects $A, B$. The auxiliary
notion is a pair of arrows with a common vertex.

> **Definition (Wedge).** A **wedge to** the pair $A, B$ is an object $X$
> with arrows $f_A : X \to A$ and $f_B : X \to B$. A **wedge from** the pair
> is an object $X$ with arrows $f_A : A \to X$ and $f_B : B \to X$.

Simmons calls both a wedge; wedges to the pair are also called **cones** on
$(A, B)$, and wedges from the pair **cocones**.[^simmons-wedge] For a given
pair there are typically many wedges on each side. The product is the wedge
through which every other wedge to the pair factors, in exactly one way. That
factorization condition is the universal property.

## The product

> **Definition (Product).** A **product** of $A$ and $B$ is a wedge
> $A \xleftarrow{\,p_A\,} P \xrightarrow{\,p_B\,} B$ such that for every
> wedge $A \xleftarrow{\,f_A\,} X \xrightarrow{\,f_B\,} B$ there is a unique
> arrow $m : X \to P$ with
>
> $$
> p_A \circ m = f_A, \qquad p_B \circ m = f_B .
> $$
>
> The arrows $p_A, p_B$ are the **projections** and $m$ is the **mediating
> arrow** (or **mediator**) for the wedge on $X$. The object is written
> $A \times B$ and the mediator $\langle f_A, f_B \rangle$.

$$
% caption: The product's universal property: any wedge from $X$ to the pair
% factors through the projections by exactly one mediating arrow $m$ (dashed),
% with both triangles commuting.
\begin{tikzpicture}[>=stealth, font=\footnotesize,
  ob/.style={draw, minimum width=11mm, minimum height=9mm, font=\footnotesize}]
  \definecolor{acc}{HTML}{4A6FA5}
  \node[ob] (X) at (2.7,2.6) {$X$};
  \node[ob, draw=acc, text=acc, thick] (P) at (2.7,0) {$P$};
  \node[ob] (A) at (0,-1.9) {$A$};
  \node[ob] (B) at (5.4,-1.9) {$B$};
  \draw[->, black] (X) .. controls (0.6,1.8) .. (A.north) node[pos=0.35, left, font=\scriptsize] {$f_A$};
  \draw[->, black] (X) .. controls (4.8,1.8) .. (B.north) node[pos=0.35, right, font=\scriptsize] {$f_B$};
  \draw[->, acc, thick, dashed] (X) -- (P) node[midway, right, font=\scriptsize, text=black] {unique $m$};
  \draw[->, acc] (P) -- (A.north east) node[midway, below right, font=\scriptsize] {$p_A$};
  \draw[->, acc] (P) -- (B.north west) node[midway, below left, font=\scriptsize] {$p_B$};
\end{tikzpicture}
$$

Two points. First, the product is the object _together with_ the projections;
the same object with different arrows is a different product cone. Second, the
mediator's uniqueness carries the definition, as the next lemma shows.

### Rigidity and essential uniqueness

> **Lemma (Rigidity).** Let $A \xleftarrow{p_A} P \xrightarrow{p_B} B$ be a
> product wedge and $k : P \to P$ an arrow with $p_A \circ k = p_A$ and
> $p_B \circ k = p_B$. Then $k = \mathrm{id}_P$.

> **Proof.** The wedge $(P, p_A, p_B)$ itself has a unique mediator
> $m : P \to P$ with $p_A \circ m = p_A$ and $p_B \circ m = p_B$. Both $k$ and
> $\mathrm{id}_P$ satisfy these equations, so $k = m = \mathrm{id}_P$.[^simmons-lemma]
> $\blacksquare$
> **Theorem (Essential uniqueness of products).** If
> $A \xleftarrow{p_A} P \xrightarrow{p_B} B$ and
> $A \xleftarrow{q_A} Q \xrightarrow{q_B} B$ are both products of $A$ and
> $B$, there is a unique isomorphism $j : Q \to P$ with $p_A \circ j = q_A$
> and $p_B \circ j = q_B$.

> **Proof.** Universality of $P$ applied to the wedge $Q$ gives
> $j : Q \to P$ with $p_A \circ j = q_A$, $p_B \circ j = q_B$; universality of
> $Q$ applied to the wedge $P$ gives $j_1 : P \to Q$ the other way. The
> composite $j \circ j_1 : P \to P$ satisfies
> $p_A \circ (j \circ j_1) = q_A \circ j_1 = p_A$ and likewise for $p_B$, so by
> rigidity $j \circ j_1 = \mathrm{id}_P$; symmetrically
> $j_1 \circ j = \mathrm{id}_Q$. $\blacksquare$

This is the [round-trip uniqueness argument](/category-theory/universal-properties/universal-properties)
run inside the category of wedges to $(A, B)$ — in fact a product is nothing but
a _terminal object_ in that category of wedges, which is why the proof is the
same. The reduction of every universal property to an initial or terminal
object somewhere is completed by the
[comma-category construction](/category-theory/universal-properties/constructions-on-categories).

### Products in the standard categories

- **$\mathbf{Set}$.** The cartesian product with the usual projections. For
  a wedge $f_A : X \to A$, $f_B : X \to B$, the mediator must satisfy
  $p_A(m(x)) = f_A(x)$ and $p_B(m(x)) = f_B(x)$, which forces both
  coordinates: $m(x) = (f_A(x), f_B(x))$. Existence and uniqueness in one
  line.[^lein-setprod]
- **$\mathbf{Grp}$, $\mathbf{Mon}$, $\mathbf{Ring}$, $\mathbf{Vect}_k$.**
  The product set with componentwise operations. Two things need checking:
  the projections are homomorphisms, and the $\mathbf{Set}$-mediator
  $x \mapsto (f_A(x), f_B(x))$ is a homomorphism whenever $f_A$ and $f_B$
  are. Both are direct calculations; e.g. for semigroups
  $\langle f_A, f_B\rangle(xy) = (f_A(xy), f_B(xy)) = (f_A(x)f_A(y),
  f_B(x)f_B(y)) = \langle f_A, f_B\rangle(x)\,\langle f_A,
  f_B\rangle(y)$.[^bw-sem]
- **$\mathbf{Top}$.** The product set with the _product topology_ — the
  coarsest topology making both projections continuous. Coarsest is forced:
  any finer topology keeps the projections continuous but breaks continuity
  of some mediator, and any coarser one breaks the projections. The universal
  property is why the product topology, not the box topology, is the right
  general definition.
- **$\mathbf{Pos}$.** The product set with the componentwise order.
- **A poset as a category.** A product of elements $x$ and $y$ is an element
  $z$ with $z \le x$, $z \le y$ (the wedge) such that every $w$ below both
  $x$ and $y$ has $w \le z$ (the mediator; uniqueness is automatic in a thin
  category). That is the **meet** $x \wedge y$: greatest lower bound.
  Categorical products generalize infima.[^bw-poset]

Products can fail to exist. In the discrete two-object category
$\{X, \; Y\}$ with only identity arrows, no object has arrows to both $X$
and $Y$, so no wedge exists at all, let alone a universal one. A poset
lacking meets (two incomparable elements with no common lower bound), or the
category of fields, gives natural examples.[^lein-fail]

> **Worked example (A product in $\mathbf{Set}$).** Take $A = \{a, b, c\}$ and
> $B = \{0, 1\}$. The product $A \times B$ has the six pairs $(a,0)$, $(a,1)$,
> $(b,0)$, $(b,1)$, $(c,0)$, $(c,1)$, with $p_A(x, y) = x$ and $p_B(x, y) = y$.
> Take the wedge from $X = \{u, v\}$ with $f_A(u) = a$, $f_A(v) = c$ and
> $f_B(u) = 1$, $f_B(v) = 0$. The mediator is forced coordinate by coordinate:
> $m(u) = (a, 1)$ and $m(v) = (c, 0)$ is the only function with
> $p_A \circ m = f_A$ and $p_B \circ m = f_B$. Existence and uniqueness are one
> and the same computation — read off both coordinates.

### Calculus of products

The mediator notation supports a small calculus, valid in any category with
the relevant products:

- **Pairing.** $\langle f_A, f_B \rangle : X \to A \times B$ is the unique
  arrow with $p_A \circ \langle f_A, f_B\rangle = f_A$ and
  $p_B \circ \langle f_A, f_B\rangle = f_B$.
- **Product of arrows.** For $f : A \to A_1$ and $g : B \to B_1$,
  $f \times g = \langle f \circ p_A, \; g \circ p_B \rangle :
  A \times B \to A_1 \times B_1$, the arrow acting as $f$ on the first
  coordinate and $g$ on the second. This makes $- \times -$ a
  [functor](/category-theory/foundations/functors)
  $\mathscr{C} \times \mathscr{C} \to \mathscr{C}$.
- **Unit and associativity, up to isomorphism.** If $\mathscr{C}$ has a
  terminal object $1$, then $1 \times A \cong A \cong A \times 1$, and for
  any triple, $(A \times B) \times C \cong A \times (B \times C)$. Each
  isomorphism is produced, uniquely, by pairing up the evident
  projections.[^simmons-assoc]
- **Symmetry.** $A \times B \cong B \times A$ via
  $\langle p_B, p_A \rangle$. The two cones have different bases (the
  ordered pairs $(A,B)$ and $(B,A)$), so they are different products of
  different diagrams that happen to have isomorphic vertices.

Indexed products generalize the binary case: for a family
$(A_i)_{i \in I}$, a product is an object $\prod_{i \in I} A_i$ with
projections $p_i$ through which every family of arrows $f_i : X \to A_i$
factors by a unique mediator. Binary products are the case $I = \{1, 2\}$; a
terminal object is the case $I = \varnothing$, a product of no objects, where
the mediator condition degenerates to "exactly one arrow from each $X$".

## The coproduct

Reverse every arrow in the definition of product. What results is a genuinely
different construction, not a formal curiosity.

> **Definition (Coproduct).** A **coproduct** (or **sum**) of $A$ and $B$ is
> a wedge $A \xrightarrow{\,i_A\,} S \xleftarrow{\,i_B\,} B$ such that for
> every wedge $A \xrightarrow{\,f_A\,} X \xleftarrow{\,f_B\,} B$ there is a
> unique arrow $m : S \to X$ with
>
> $$
> m \circ i_A = f_A, \qquad m \circ i_B = f_B .
> $$
>
> The arrows $i_A, i_B$ are the **injections** (or **inclusions**), the
> object is written $A + B$, and the mediator $[f_A \mid f_B]$ (case
> analysis: do $f_A$ on the $A$-part, $f_B$ on the $B$-part).

$$
% caption: The coproduct's universal property, the mirror image of the
% product: arrows now leave the pair, enter the sum by the injections, and the
% unique mediator $m$ exits the sum.
\begin{tikzpicture}[>=stealth, font=\footnotesize,
  ob/.style={draw, minimum width=11mm, minimum height=9mm, font=\footnotesize}]
  \definecolor{acc}{HTML}{4A6FA5}
  \node[ob] (A) at (0,1.9) {$A$};
  \node[ob] (B) at (5.4,1.9) {$B$};
  \node[ob, draw=acc, text=acc, thick] (S) at (2.7,0) {$S$};
  \node[ob] (X) at (2.7,-2.6) {$X$};
  \draw[->, acc] (A.south east) -- (S) node[midway, above right, font=\scriptsize] {$i_A$};
  \draw[->, acc] (B.south west) -- (S) node[midway, above left, font=\scriptsize] {$i_B$};
  \draw[->, black] (A) .. controls (0.6,-1.1) .. (X.west) node[pos=0.65, left, font=\scriptsize] {$f_A$};
  \draw[->, black] (B) .. controls (4.8,-1.1) .. (X.east) node[pos=0.65, right, font=\scriptsize] {$f_B$};
  \draw[->, acc, thick, dashed] (S) -- (X) node[midway, right, font=\scriptsize, text=black] {unique $m$};
\end{tikzpicture}
$$

Rigidity and essential uniqueness hold with the same proofs, arrows reversed;
by the [duality principle](/category-theory/universal-properties/constructions-on-categories)
they need not be re-proved at all, since a coproduct in $\mathscr{C}$ is a
product in $\mathscr{C}^{\mathrm{op}}$.

### Coproducts in the standard categories

- **$\mathbf{Set}$: disjoint union.** Tag the elements to remember their
  origin and take the union:

  $$
  A + B \;=\; \big(A \times \{0\}\big) \cup \big(B \times \{1\}\big),
  \qquad i_A(a) = (a, 0), \quad i_B(b) = (b, 1).
  $$

  Given $f_A : A \to X$ and $f_B : B \to X$, the mediator is case analysis —
  $m(a,0) = f_A(a)$, $m(b,1) = f_B(b)$ — and no other function satisfies both
  triangle equations. Tagging matters: if $A$ and $B$ overlap, the plain
  union would identify shared elements and the mediator would be
  overdetermined.[^simmons-sum]
- **$\mathbf{Top}$.** The disjoint union of spaces, each part keeping its
  own topology, open sets being unions of an open set from each part.
- **A poset as a category.** The **join** $x \vee y$: least upper bound.
  In a power set ordered by $\subseteq$, meet is intersection and join is
  union; in $(\mathbb{N}, \mid)$ ordered by divisibility, meet is gcd and
  join is lcm.[^lein-join]
- **$\mathbf{Ab}$, $\mathbf{Vect}_k$.** The direct sum $A \oplus B$ — which
  as an object is the same as the product. The injections are
  $i_A(a) = (a, 0)$ and $i_B(b) = (0, b)$, and the mediator for
  $f_A, f_B$ is $m(a, b) = f_A(a) + f_B(b)$, using the addition on $X$.
  Additivity of $X$ is essential, which is why the same trick fails in
  $\mathbf{Set}$.
- **$\mathbf{Grp}$: the free product.** The cartesian product with the
  coordinate embeddings is _not_ a coproduct of nonabelian groups: images of
  the two embeddings commute elementwise in $A \times B$, but a wedge into
  $X$ need not have commuting images, so no mediator exists in general. The
  actual coproduct is the free product $A \ast{} B$, built from reduced
  alternating words — a far larger group.[^simmons-grp]
- **$\mathbf{Mon}$.** Similarly the free product of monoids; for
  commutative monoids the product object again serves.

In a poset the product and coproduct are the meet and join, and a small
divisor lattice makes both concrete at once.

$$
% caption: The divisor lattice of $12$ under divisibility. The meet (product)
% of $4$ and $6$ is their greatest common lower bound $2$; the join (coproduct)
% is their least common upper bound $12$.
\begin{tikzpicture}[>=stealth, font=\footnotesize,
  nd/.style={draw, circle, minimum size=7mm, inner sep=1pt, font=\footnotesize}]
  \definecolor{acc}{HTML}{4A6FA5}
  \node[nd] (n1) at (0,0) {$1$};
  \node[nd] (n2) at (-1.6,1.3) {$2$};
  \node[nd] (n3) at (1.6,1.3) {$3$};
  \node[nd, draw=acc, text=acc, thick] (n4) at (-1.6,2.6) {$4$};
  \node[nd, draw=acc, text=acc, thick] (n6) at (1.6,2.6) {$6$};
  \node[nd] (n12) at (0,3.9) {$12$};
  \draw[black] (n1) -- (n2);
  \draw[black] (n1) -- (n3);
  \draw[black] (n2) -- (n4);
  \draw[black] (n2) -- (n6);
  \draw[black] (n3) -- (n6);
  \draw[black] (n4) -- (n12);
  \draw[black] (n6) -- (n12);
  \node[acc, font=\scriptsize, anchor=east] at (-2.1,1.3) {meet $= 2$};
  \node[acc, font=\scriptsize, anchor=south] at (0,4.1) {join $= 12$};
\end{tikzpicture}
$$

> **Worked example (Meet and join in a divisor lattice).** Order the divisors
> of $12$ by divisibility. Products are meets: the product of $4$ and $6$ is
> the largest divisor dividing both, $\gcd(4, 6) = 2$. Coproducts are joins:
> the coproduct of $4$ and $6$ is the smallest divisor they both divide,
> $\operatorname{lcm}(4, 6) = 12$. Uniqueness of the mediator is automatic
> because the category is thin — between any two divisors there is at most one
> arrow. The two constructions agree only on the diagonal: the meet and join of
> $n$ with itself are both $n$.

An object that is simultaneously a product and a coproduct (with compatible
structure arrows) is a **biproduct**, and its presence is a defining trait of
the additive categories of homological algebra. In $\mathbf{Set}$ the two constructions
could hardly differ more: for finite sets,

$$
|A \times B| = |A| \cdot |B|,
\qquad
|A + B| = |A| + |B| ,
$$

which is also the mnemonic for the notation.

$$
% caption: Product versus coproduct of finite sets: the product is a grid of
% pairs (one row per element of $B$; one column per element of $A$), the
% coproduct lays the two sets side by side with tags.
\begin{tikzpicture}[>=stealth, font=\footnotesize]
  \definecolor{acc}{HTML}{4A6FA5}
  % product grid
  \draw[black] (0,0) grid (3,2);
  \foreach \x in {0.5,1.5,2.5}
    \foreach \y in {0.5,1.5}
      \fill[acc] (\x,\y) circle (2.2pt);
  \node[anchor=north, font=\scriptsize] at (1.5,-0.35) {product of $A$ and $B$: six pairs};
  \node[anchor=south, font=\scriptsize] at (1.5,2.15) {three columns, two rows};
  % coproduct
  \begin{scope}[xshift=6.4cm]
    \draw[black] (0,0.5) rectangle (2.2,1.5);
    \foreach \x in {0.4,1.1,1.8} \fill[acc] (\x,1.0) circle (2.2pt);
    \draw[black] (2.8,0.5) rectangle (4.4,1.5);
    \foreach \x in {3.3,3.9} \fill[acc!60!black] (\x,1.0) circle (2.2pt);
    \node[anchor=north, font=\scriptsize] at (2.2,-0.05) {$A + B$: 3 + 2 tagged elements};
    \node[anchor=south, font=\scriptsize] at (1.1,1.6) {copy of $A$};
    \node[anchor=south, font=\scriptsize] at (3.6,1.6) {copy of $B$};
  \end{scope}
\end{tikzpicture}
$$

> **Worked example (A biproduct in $\mathbf{Ab}$).** In $\mathbf{Ab}$ the
> product $\mathbb{Z}/2 \times \mathbb{Z}/3$ and the coproduct
> $\mathbb{Z}/2 \oplus \mathbb{Z}/3$ are the same group, of order $6$, with
> projections $(a, b) \mapsto a$, $(a, b) \mapsto b$ and injections
> $a \mapsto (a, 0)$, $b \mapsto (0, b)$. As a product it receives the mediator
> $\langle f, g\rangle(x) = (f(x), g(x))$ for homomorphisms $f, g$ out of any
> group $X$; as a coproduct it emits $[f \mid g](a, b) = f(a) + g(b)$, using
> the addition on the target. Since $\gcd(2, 3) = 1$, the Chinese remainder
> theorem gives $\mathbb{Z}/2 \oplus \mathbb{Z}/3 \cong \mathbb{Z}/6$, the
> element $(1, 1)$ generating the whole group. The coproduct formula fails in
> $\mathbf{Set}$: without an addition on the target there is no
> $f(a) + g(b)$ to write down.

## Comparison

| Category | $A \times B$ | $A + B$ | Coincide? |
| --- | --- | --- | --- |
| $\mathbf{Set}$ | cartesian product | tagged disjoint union | no |
| $\mathbf{Top}$ | product topology | disjoint union of spaces | no |
| poset | meet $x \wedge y$ | join $x \vee y$ | only when $x = y$ |
| $\mathbf{Ab}$, $\mathbf{Vect}_k$ | direct product | direct sum | yes (biproduct) |
| $\mathbf{Grp}$ | direct product | free product $A \ast{} B$ | no |
| $\mathbf{Ring}$ | product ring | more complex (not disjoint union) | no |

A distributivity caution: in $\mathbf{Set}$,
$(A + B) \times C \cong A \times C + B \times C$, but in a general category
with products and coproducts only a canonical comparison arrow

$$
A \times C \;+\; B \times C \;\longrightarrow\; (A + B) \times C
$$

exists, and it need not be an isomorphism (in $\mathbf{Ab}$ it fails).
Categories where it is invertible are called **distributive**, a property
$\mathbf{Set}$-like categories have and additive ones lack.[^bw-dist]

## Products and sums as data types

Barr and Wells give a computing reading of the two constructions.[^bw-cs] In
a
[category of types and programs](/category-theory/foundations/examples-of-categories):

- **Products are record types.** A record with fields
  $\texttt{name} : A$, $\texttt{salary} : B$ is an object with projections
  (field accessors) $A \xleftarrow{} A \times B \xrightarrow{} B$, and the
  universal property says a program computing a record is exactly a pair of
  programs computing its fields. Indexed products over an attribute set
  model database rows.
- **Sums are variant types.** A tagged union ($\texttt{Either A B}$) has
  injections (constructors), and the universal property is case analysis: a
  program out of $A + B$ is exactly one program handling each alternative —
  the mediator $[f \mid g]$ is the $\texttt{case}$ expression.
- **In logic**, product is conjunction and sum is disjunction: a deduction
  system with conjunction satisfying the natural proof rules is a category
  with finite products, with $\mathrm{true}$ as terminal object.

The pairing/case-analysis symmetry — construct into a product, eliminate out
of a sum — is the categorical face of the introduction/elimination duality of
natural deduction, and returns with
[cartesian closed categories](/category-theory/cartesian-closed-lambda/cartesian-closed-categories).

## General limits

Products answer a shape-question: given a _discrete_ pair of objects, find
the universal wedge. Replacing the pair by an arbitrary diagram — objects
_and arrows_ that mediating wedges must respect — yields the general
[limit](/category-theory/limits-colimits/limits), of which the product is
the simplest nontrivial case (limit over a two-object discrete shape) and
the terminal object the trivial one (limit over the empty shape). Two more
small shapes,
[equalizers and pullbacks](/category-theory/limits-colimits/products-equalizers-pullbacks),
complete a generating set: a category with binary products, equalizers, and
a terminal object has all finite limits. The dual constructions run through
[colimits](/category-theory/limits-colimits/colimits). The technique is the
same throughout: apply the universal object to a competing wedge, take the
unique factorization, and cancel round trips by rigidity.

[^simmons-25]: **Simmons**, _An Introduction to Category Theory_, §2.5 — products and coproducts developed in parallel left/right columns; the abelian-group motivation for the dual problem.
[^simmons-wedge]: **Simmons**, §2.5, Definition 2.5.1 — wedges to and from a pair; the cone/cocone terminology.
[^simmons-lemma]: **Simmons**, §2.5, Lemmas 2.5.3–2.5.4 — the endo-arrow rigidity lemma and essential uniqueness of products and coproducts.
[^lein-setprod]: **Leinster**, _Basic Category Theory_, Example 5.1.3 — verification that the cartesian product is a categorical product, with the uniqueness computation.
[^bw-sem]: **Barr & Wells**, _Category Theory for Computing Science_, §5.1.7 — the semigroup product verified in full: projections are homomorphisms, and the induced mediator is one.
[^bw-poset]: **Barr & Wells**, §5.1.8 — products in a poset category are infima; a poset without infima is a category without products.
[^lein-fail]: **Leinster**, Remark 5.1.2(a) — nonexistence of products in the discrete two-object category; uniqueness up to isomorphism when they do exist.
[^simmons-assoc]: **Simmons**, §2.5, Exercise 2.5.7 — unit and associativity isomorphisms for binary products in a category with a terminal object.
[^simmons-sum]: **Simmons**, §2.5 — the tagged disjoint union $A + B = (A \times \{0\}) \cup (B \times \{1\})$ with its embeddings; **Barr & Wells**, §5.4.5 — sums in $\mathbf{Set}$.
[^lein-join]: **Leinster**, Example 5.2.6 — joins as binary sums in a poset; union in a power set, lcm under divisibility.
[^simmons-grp]: **Simmons**, §2.5, Exercise 2.5.9 — the cartesian product implements both product and coproduct in $\mathbf{AGrp}$ but not the coproduct in $\mathbf{Grp}$; **Leinster**, Example 5.2.4 — direct sums as sums in $\mathbf{Vect}_k$.
[^bw-dist]: **Barr & Wells**, §5.7 — distributive categories; the canonical arrow $A \times C + B \times C \to (A+B) \times C$ and when it is invertible; **Simmons**, §2.5, Exercise 2.5.8.
[^bw-cs]: **Barr & Wells**, §5.3.14 and §5.6 — indexed products as database attributes; deduction systems as categories, conjunction calculus with $\mathrm{true}$ as terminal object and $\wedge$ as product.
