The proof is the longest so far, but it demands no ingenuity. At each step there is essentially one
thing that can be written down, and writing it down is the whole task; understanding every term in
the statement is enough to reconstruct the argument unaided. We build the isomorphism for each fixed
pair \((A, X)\) first, then verify that the construction is natural in both variables.
Fix \(A \in \mathscr{A}\) and a presheaf \(X\). We must produce a bijection
\[
[\mathscr{A}^{\mathrm{op}}, \mathbf{Set}](H_A, X) \;\rightleftarrows\; X(A)
\]
and exhibit the two directions as mutually inverse. Write \(\widehat{(\ )}\) for the forward map,
carrying a natural transformation to an element of \(X(A)\), and \(\widetilde{(\ )}\) for the
backward map, carrying an element of \(X(A)\) to a natural transformation. Four things are then
required: define \(\widehat{(\ )}\), define \(\widetilde{(\ )}\), and show that each composite
\(\widehat{\widetilde{(\ )}}\) and \(\widetilde{\widehat{(\ )}}\) is the identity.
Proof.
The forward map.
Given a natural transformation \(\alpha : H_A \to X\), there is only one element of \(X(A)\) it
can reasonably be sent to. The component of \(\alpha\) at \(A\) is a function
\(\alpha_A : H_A(A) = \mathscr{A}(A, A) \to X(A)\), and the domain contains a distinguished
element, the identity \(1_A\). Define
\[
\widehat{\alpha} = \alpha_A(1_A) \in X(A) .
\]
There is no other element canonically available, which is the first sign that this map is
forced.
The backward map.
Conversely, take an element \(x \in X(A)\). We must build from it a natural transformation
\(\widetilde{x} : H_A \to X\), that is, for each object \(B \in \mathscr{A}\) a function
\[
\widetilde{x}_B : H_A(B) = \mathscr{A}(B, A) \to X(B) .
\]
Again there is only one sensible definition. An element of \(\mathscr{A}(B, A)\) is a map
\(f : B \to A\); applying the presheaf \(X\) to it gives a function
\(X(f) : X(A) \to X(B)\), into which the element \(x\) may be fed. Set
\[
\widetilde{x}_B(f) = \big(X(f)\big)(x) \in X(B) .
\]
This is well posed because \(X(f)\) maps \(X(A)\) to \(X(B)\) and \(x\) lies in \(X(A)\).
Naturality of \(\widetilde{x}\).
For the family \(\widetilde{x} = (\widetilde{x}_B)_{B \in \mathscr{A}}\) to be a
natural transformation,
each map \(g : B' \to B\) in \(\mathscr{A}\) must make the square
\[
\begin{array}{ccc}
\mathscr{A}(B, A) & \xrightarrow{\;-\circ\, g\;} & \mathscr{A}(B', A) \\[4pt]
{\scriptstyle \widetilde{x}_B}\big\downarrow & & \big\downarrow{\scriptstyle \widetilde{x}_{B'}} \\[4pt]
X(B) & \xrightarrow{\;X(g)\;} & X(B')
\end{array}
\]
commute, where the top arrow is the action of \(H_A\) on \(g\), namely pre-composition by \(g\),
and the bottom is \(X(g)\). Take \(f \in \mathscr{A}(B, A)\). Down-then-across sends it to
\(\big(X(g)\big)\big(\widetilde{x}_B(f)\big) = \big(X(g)\big)\big(\big(X(f)\big)(x)\big)\),
while across-then-down sends it to
\(\widetilde{x}_{B'}(f \circ g) = \big(X(f \circ g)\big)(x)\). The presheaf \(X\) is
contravariant, so it reverses the order of composition,
\[
X(f \circ g) = X(g) \circ X(f) ,
\]
and applying both sides to \(x\) shows the two paths agree. The square commutes for every \(g\),
so \(\widetilde{x}\) is a genuine natural transformation \(H_A \to X\).
The forward map undoes the backward map.
Starting from an element \(x \in X(A)\), form \(\widetilde{x}\) and then evaluate it by the
forward rule. By definition \(\widehat{\widetilde{x}} = \widetilde{x}_A(1_A)\), and the backward
construction gives \(\widetilde{x}_A(1_A) = \big(X(1_A)\big)(x)\). A presheaf preserves
identities, so \(X(1_A)\) is the identity function on \(X(A)\), and therefore
\[
\widehat{\widetilde{x}} = \big(X(1_A)\big)(x) = 1_{X(A)}(x) = x .
\]
The round trip from \(X(A)\) and back is the identity.
The backward map undoes the forward map.
Starting now from a natural transformation \(\alpha : H_A \to X\), we must show that rebuilding
a transformation from its element returns \(\alpha\) itself, that is,
\(\widetilde{\widehat{\alpha}} = \alpha\). Two natural transformations agree exactly when all
their components agree, so it suffices to prove \(\big(\widetilde{\widehat{\alpha}}\big)_B = \alpha_B\)
for every \(B \in \mathscr{A}\). Both sides are functions
\(H_A(B) = \mathscr{A}(B, A) \to X(B)\), and two functions agree when they agree on each element
of the domain, so it suffices to prove
\[
\big(\widetilde{\widehat{\alpha}}\big)_B(f) = \alpha_B(f)
\qquad \text{for all } f : B \to A .
\]
Unwinding the left-hand side by the two definitions, \(\widehat{\alpha} = \alpha_A(1_A)\) and
the backward construction give
\[
\big(\widetilde{\widehat{\alpha}}\big)_B(f) = \big(X(f)\big)(\widehat{\alpha})
= \big(X(f)\big)\big(\alpha_A(1_A)\big) ,
\]
so the whole matter reduces to the single identity
\[
\big(X(f)\big)\big(\alpha_A(1_A)\big) = \alpha_B(f) .
\]
Here naturality of \(\alpha\) is the only tool available, and it is exactly enough. The map
\(f : B \to A\) acts on the representable by pre-composition, \(H_A(f) = - \circ f\), and the
naturality square of \(\alpha\) at \(f\),
\[
\begin{array}{ccc}
\mathscr{A}(A, A) & \xrightarrow{\;-\circ\, f\;} & \mathscr{A}(B, A) \\[4pt]
{\scriptstyle \alpha_A}\big\downarrow & & \big\downarrow{\scriptstyle \alpha_B} \\[4pt]
X(A) & \xrightarrow{\;X(f)\;} & X(B)
\end{array}
\]
commutes. Tracing the identity \(1_A \in \mathscr{A}(A, A)\) around it gives, along one path,
\(\big(X(f)\big)\big(\alpha_A(1_A)\big)\), and along the other,
\(\alpha_B(1_A \circ f) = \alpha_B(f)\). The two are therefore equal, which is the required
identity. Hence \(\widetilde{\widehat{\alpha}} = \alpha\), and the forward and backward maps are
mutually inverse. The bijection
\([\mathscr{A}^{\mathrm{op}}, \mathbf{Set}](H_A, X) \cong X(A)\) is established for each fixed
pair \((A, X)\).
Naturality in \(X\).
It remains to show the bijection is natural in both variables. We may economize twice. First,
for a pair of mutually inverse families it is enough to prove that one of them is natural, since
naturality of an isomorphism transfers to its inverse; we check \(\widehat{(\ )}\). Second, a
construction in two variables is natural in the pair precisely when it is natural in each
variable separately, the other held fixed; we check the two singly.
Fix \(A\) and let \(\theta : X \to X'\) be a map of presheaves. Naturality in \(X\) asks that the
square
\[
\begin{array}{ccc}
[\mathscr{A}^{\mathrm{op}}, \mathbf{Set}](H_A, X) & \xrightarrow{\;\theta \circ -\;} & [\mathscr{A}^{\mathrm{op}}, \mathbf{Set}](H_A, X') \\[4pt]
{\scriptstyle \widehat{(\ )}}\big\downarrow & & \big\downarrow{\scriptstyle \widehat{(\ )}} \\[4pt]
X(A) & \xrightarrow{\;\theta_A\;} & X'(A)
\end{array}
\]
commute, the top arrow being post-composition with \(\theta\) and the bottom the component
\(\theta_A\). For \(\alpha : H_A \to X\), down-then-across yields \(\theta_A(\widehat{\alpha}) =
\theta_A\big(\alpha_A(1_A)\big)\), while across-then-down yields
\(\widehat{\theta \circ \alpha} = (\theta \circ \alpha)_A(1_A)\). By the definition of composition
of natural transformations, \((\theta \circ \alpha)_A = \theta_A \circ \alpha_A\), so the two
results coincide and the square commutes.
Naturality in \(A\).
Fix \(X\) and let \(f : B \to A\) be a map in \(\mathscr{A}\). The
Yoneda embedding
carries \(f\) to a map of presheaves \(H_f : H_B \to H_A\), and composing with it sends a
natural transformation \(H_A \to X\) to one \(H_B \to X\), the operation \(- \circ H_f\); on the
value side \(X(f)\) carries \(X(A)\) to \(X(B)\). Naturality in \(A\) asks that
\[
\begin{array}{ccc}
[\mathscr{A}^{\mathrm{op}}, \mathbf{Set}](H_A, X) & \xrightarrow{\;-\circ\, H_f\;} & [\mathscr{A}^{\mathrm{op}}, \mathbf{Set}](H_B, X) \\[4pt]
{\scriptstyle \widehat{(\ )}}\big\downarrow & & \big\downarrow{\scriptstyle \widehat{(\ )}} \\[4pt]
X(A) & \xrightarrow{\;X(f)\;} & X(B)
\end{array}
\]
commute. For \(\alpha : H_A \to X\), the down-then-across path gives
\(\big(X(f)\big)\big(\widehat{\alpha}\big) = \big(X(f)\big)\big(\alpha_A(1_A)\big)\), which by the
identity already proved equals \(\alpha_B(f)\). The across-then-down path gives
\(\widehat{\alpha \circ H_f} = (\alpha \circ H_f)_B(1_B)\); unwinding the component of \(H_f\) at
\(B\), which sends \(1_B\) to \(f \circ 1_B = f\), this is \(\alpha_B(f)\) as well. The two paths
agree, the square commutes, and the bijection is natural in \(A\). Naturality in both variables
is thus secured, completing the proof.
It is worth pausing on the heart of the argument. The proof that \(\widetilde{\widehat{\alpha}} = \alpha\)
showed that the value \(\alpha_A(1_A)\), through the single equation
\(\big(X(f)\big)\big(\alpha_A(1_A)\big) = \alpha_B(f)\), already fixes the value of every component
\(\alpha_B\) on every map \(f : B \to A\). Nothing about \(\alpha\) is left free once its action on the
identity is known. In a phrase:
This is the whole of the Yoneda lemma in miniature. The bijection does not merely count the natural
transformations and the elements of \(X(A)\) and find the totals equal; it identifies each
transformation with the one element it produces at the identity, and shows that this element may be
chosen freely and reconstructs the transformation uniquely. The elaborate compatibility encoded in a
natural transformation out of a representable is, in the end, no constraint at all beyond the choice
of a single point.