[proofplan]
We first recall the construction of the induced map on homology: a chain map sends cycles to cycles and boundaries to boundaries, so it descends to a well-defined $R$-[linear map](/page/Linear%20Map) on the quotient defining homology. We then check the two functoriality axioms. The identity chain map induces the identity map on homology classes, and the composite of two chain maps induces the composite of the corresponding homology maps.
[/proofplan]
custom_env
admin
[step:Show that a chain map induces a well-defined map on homology]Let
\begin{align*}
C_\bullet = \left( (C_k)_{k \in \mathbb{Z}}, (d^C_k: C_k \to C_{k-1})_{k \in \mathbb{Z}} \right)
\end{align*}
and
\begin{align*}
D_\bullet = \left( (D_k)_{k \in \mathbb{Z}}, (d^D_k: D_k \to D_{k-1})_{k \in \mathbb{Z}} \right)
\end{align*}
be chain complexes of left $R$-modules. Fix $n \in \mathbb{Z}$. Define the $n$-cycles and $n$-boundaries of $C_\bullet$ by
\begin{align*}
Z_n(C_\bullet) &:= \ker(d^C_n: C_n \to C_{n-1}), \\
B_n(C_\bullet) &:= \operatorname{im}(d^C_{n+1}: C_{n+1} \to C_n),
\end{align*}
and define $Z_n(D_\bullet)$ and $B_n(D_\bullet)$ analogously. Since $d^C_n \circ d^C_{n+1} = 0$, we have $B_n(C_\bullet) \subseteq Z_n(C_\bullet)$, so
\begin{align*}
H_n(C_\bullet) := Z_n(C_\bullet) / B_n(C_\bullet)
\end{align*}
is a left $R$-module. Likewise,
\begin{align*}
H_n(D_\bullet) := Z_n(D_\bullet) / B_n(D_\bullet).
\end{align*}
Let $f_\bullet: C_\bullet \to D_\bullet$ be a chain map, so $f_\bullet$ consists of $R$-linear maps $f_k: C_k \to D_k$ satisfying
\begin{align*}
d^D_k \circ f_k = f_{k-1} \circ d^C_k
\end{align*}
for every $k \in \mathbb{Z}$. If $z \in Z_n(C_\bullet)$, then $d^C_n(z) = 0$, and therefore
\begin{align*}
d^D_n(f_n(z)) = f_{n-1}(d^C_n(z)) = f_{n-1}(0) = 0.
\end{align*}
Thus $f_n(z) \in Z_n(D_\bullet)$.
If $b \in B_n(C_\bullet)$, then there exists $c \in C_{n+1}$ such that $b = d^C_{n+1}(c)$. Using the chain map identity in degree $n+1$ gives
\begin{align*}
f_n(b) = f_n(d^C_{n+1}(c)) = d^D_{n+1}(f_{n+1}(c)).
\end{align*}
Hence $f_n(b) \in B_n(D_\bullet)$. Therefore $f_n$ sends cycles to cycles and boundaries to boundaries.
Define
\begin{align*}
H_n(f_\bullet): H_n(C_\bullet) &\to H_n(D_\bullet) \\
[z] &\mapsto [f_n(z)],
\end{align*}
where $z \in Z_n(C_\bullet)$ and $[z]$ denotes the coset $z + B_n(C_\bullet)$. The preceding paragraph shows that the target class is defined. To check well-definedness, suppose $z,z' \in Z_n(C_\bullet)$ and $[z] = [z']$ in $H_n(C_\bullet)$. Then $z - z' \in B_n(C_\bullet)$, so $f_n(z-z') \in B_n(D_\bullet)$. Since $f_n$ is $R$-linear,
\begin{align*}
f_n(z) - f_n(z') = f_n(z-z') \in B_n(D_\bullet).
\end{align*}
Thus $[f_n(z)] = [f_n(z')]$ in $H_n(D_\bullet)$. The same formula also shows that $H_n(f_\bullet)$ is $R$-linear, because it is induced by the $R$-linear map $f_n$ on a quotient.[/step]
custom_env
admin
[guided]The homology module is a quotient of cycles by boundaries, so a map on chain complexes can induce a map on homology only if it respects both submodules. We verify that property directly from the chain map equation.
Let
\begin{align*}
C_\bullet = \left( (C_k)_{k \in \mathbb{Z}}, (d^C_k: C_k \to C_{k-1})_{k \in \mathbb{Z}} \right)
\end{align*}
and
\begin{align*}
D_\bullet = \left( (D_k)_{k \in \mathbb{Z}}, (d^D_k: D_k \to D_{k-1})_{k \in \mathbb{Z}} \right)
\end{align*}
be chain complexes of left $R$-modules. For the fixed integer $n$, define
\begin{align*}
Z_n(C_\bullet) &:= \ker(d^C_n: C_n \to C_{n-1}), \\
B_n(C_\bullet) &:= \operatorname{im}(d^C_{n+1}: C_{n+1} \to C_n).
\end{align*}
The condition $d^C_n \circ d^C_{n+1} = 0$ implies $B_n(C_\bullet) \subseteq Z_n(C_\bullet)$, so the quotient
\begin{align*}
H_n(C_\bullet) := Z_n(C_\bullet) / B_n(C_\bullet)
\end{align*}
is defined. Define $Z_n(D_\bullet)$, $B_n(D_\bullet)$, and $H_n(D_\bullet)$ in the same way.
Now let $f_\bullet: C_\bullet \to D_\bullet$ be a chain map. This means that each component
\begin{align*}
f_k: C_k \to D_k
\end{align*}
is $R$-linear and satisfies
\begin{align*}
d^D_k \circ f_k = f_{k-1} \circ d^C_k
\end{align*}
for every $k \in \mathbb{Z}$. If $z \in Z_n(C_\bullet)$, then $d^C_n(z) = 0$. Applying the chain map identity in degree $n$, we get
\begin{align*}
d^D_n(f_n(z)) = f_{n-1}(d^C_n(z)) = f_{n-1}(0) = 0.
\end{align*}
Thus $f_n(z)$ is an $n$-cycle in $D_\bullet$.
Next suppose $b \in B_n(C_\bullet)$. By definition of image, there exists $c \in C_{n+1}$ such that $b = d^C_{n+1}(c)$. Applying the chain map identity in degree $n+1$ gives
\begin{align*}
f_n(b) = f_n(d^C_{n+1}(c)) = d^D_{n+1}(f_{n+1}(c)).
\end{align*}
Therefore $f_n(b)$ is an $n$-boundary in $D_\bullet$.
This is precisely the condition needed to descend from cycles to homology classes. Define
\begin{align*}
H_n(f_\bullet): H_n(C_\bullet) &\to H_n(D_\bullet) \\
[z] &\mapsto [f_n(z)].
\end{align*}
If $[z] = [z']$ in $H_n(C_\bullet)$, then $z-z' \in B_n(C_\bullet)$. Since $f_n$ sends boundaries to boundaries,
\begin{align*}
f_n(z) - f_n(z') = f_n(z-z') \in B_n(D_\bullet).
\end{align*}
Hence $[f_n(z)] = [f_n(z')]$ in $H_n(D_\bullet)$, so the formula is independent of the chosen representative. Since $f_n$ is $R$-linear and the quotient operations are inherited from the cycle modules, the induced map $H_n(f_\bullet)$ is $R$-linear.[/guided]
custom_env
admin
[step:Verify that identity chain maps induce identity maps on homology]
Let $C_\bullet$ be a chain complex of left $R$-modules, and let $\operatorname{id}_{C_\bullet}: C_\bullet \to C_\bullet$ be the identity chain map, whose degree-$k$ component is
\begin{align*}
(\operatorname{id}_{C_\bullet})_k = \operatorname{id}_{C_k}: C_k \to C_k.
\end{align*}
For every class $[z] \in H_n(C_\bullet)$ represented by $z \in Z_n(C_\bullet)$,
\begin{align*}
H_n(\operatorname{id}_{C_\bullet})([z])
= [(\operatorname{id}_{C_\bullet})_n(z)]
= [\operatorname{id}_{C_n}(z)]
= [z].
\end{align*}
Thus
\begin{align*}
H_n(\operatorname{id}_{C_\bullet}) = \operatorname{id}_{H_n(C_\bullet)}.
\end{align*}
[/step]
custom_env
admin
[step:Verify that composition of chain maps is preserved]
Let
\begin{align*}
f_\bullet: C_\bullet \to D_\bullet
\end{align*}
and
\begin{align*}
g_\bullet: D_\bullet \to E_\bullet
\end{align*}
be chain maps of chain complexes of left $R$-modules. Their composite $g_\bullet \circ f_\bullet: C_\bullet \to E_\bullet$ has degree-$k$ component
\begin{align*}
(g_\bullet \circ f_\bullet)_k = g_k \circ f_k: C_k \to E_k.
\end{align*}
For every class $[z] \in H_n(C_\bullet)$ represented by $z \in Z_n(C_\bullet)$, the induced map of the composite satisfies
\begin{align*}
H_n(g_\bullet \circ f_\bullet)([z])
&= [(g_\bullet \circ f_\bullet)_n(z)] \\
&= [(g_n \circ f_n)(z)] \\
&= [g_n(f_n(z))].
\end{align*}
On the other hand,
\begin{align*}
(H_n(g_\bullet) \circ H_n(f_\bullet))([z])
&= H_n(g_\bullet)([f_n(z)]) \\
&= [g_n(f_n(z))].
\end{align*}
The two maps agree on every homology class $[z] \in H_n(C_\bullet)$, hence
\begin{align*}
H_n(g_\bullet \circ f_\bullet) = H_n(g_\bullet) \circ H_n(f_\bullet).
\end{align*}
[/step]
custom_env
admin
[step:Conclude that homology defines a functor]
The assignment $C_\bullet \mapsto H_n(C_\bullet)$ sends every chain complex of left $R$-modules to a left $R$-module, and the assignment $f_\bullet \mapsto H_n(f_\bullet)$ sends every chain map to an $R$-linear map between the corresponding homology modules. The preceding two steps show that identity morphisms and composition are preserved. Therefore, for each $n \in \mathbb{Z}$, the assignment defines a functor
\begin{align*}
H_n: \operatorname{Ch}(R\operatorname{-Mod}) \to R\operatorname{-Mod}.
\end{align*}
[/step]