[proofplan]
Each isomorphism is established by the same method: define an $R$-bilinear (or $R$-multilinear) map on the Cartesian product, invoke the universal property of the tensor product to obtain a homomorphism, then construct an inverse homomorphism by the same technique. We verify well-definedness, bilinearity, and the two-sided inverse property on pure tensors (which suffices since pure tensors generate the tensor product). We give the full argument for distributivity (part 3), which is the most substantial, and then prove the remaining parts.
[/proofplan]
[step:Prove commutativity: $M \otimes_R N \cong N \otimes_R M$]
Define a map $\varphi_0: M \times N \to N \otimes_R M$ by $\varphi_0(m, n) = n \otimes m$. This map is $R$-bilinear: for $m_1, m_2 \in M$, $n \in N$, $r \in R$,
\begin{align*}
\varphi_0(m_1 + m_2, n) &= n \otimes (m_1 + m_2) = n \otimes m_1 + n \otimes m_2 = \varphi_0(m_1, n) + \varphi_0(m_2, n), \\
\varphi_0(rm, n) &= n \otimes (rm) = r(n \otimes m) = r \cdot \varphi_0(m, n),
\end{align*}
and similarly for linearity in the second argument. By the universal property of $M \otimes_R N$, there exists a unique $R$-module homomorphism $\varphi: M \otimes_R N \to N \otimes_R M$ with $\varphi(m \otimes n) = n \otimes m$.
By the identical argument with $M$ and $N$ swapped, there exists $\psi: N \otimes_R M \to M \otimes_R N$ with $\psi(n \otimes m) = m \otimes n$. On pure tensors, $(\psi \circ \varphi)(m \otimes n) = \psi(n \otimes m) = m \otimes n$ and $(\varphi \circ \psi)(n \otimes m) = \varphi(m \otimes n) = n \otimes m$. Since pure tensors generate each tensor product and the identity map is the unique homomorphism fixing all generators, $\psi \circ \varphi = \operatorname{id}_{M \otimes_R N}$ and $\varphi \circ \psi = \operatorname{id}_{N \otimes_R M}$.
[/step]
[step:Prove associativity: $(M \otimes_R N) \otimes_R P \cong M \otimes_R (N \otimes_R P)$]
For each fixed $p \in P$, define $\beta_p: M \times N \to M \otimes_R (N \otimes_R P)$ by $\beta_p(m, n) = m \otimes (n \otimes p)$. This is $R$-bilinear in $(m, n)$: linearity in $m$ follows from the left-linearity of $\otimes$ in $M \otimes_R (N \otimes_R P)$, and linearity in $n$ follows because $n \mapsto n \otimes p$ is $R$-linear and $\otimes$ in $M \otimes_R (N \otimes_R P)$ is $R$-linear in the second argument. By the universal property of $M \otimes_R N$, for each $p$ there exists a unique $R$-module homomorphism $\alpha_p: M \otimes_R N \to M \otimes_R (N \otimes_R P)$ with $\alpha_p(m \otimes n) = m \otimes (n \otimes p)$.
Now define $\varphi_0: (M \otimes_R N) \times P \to M \otimes_R (N \otimes_R P)$ by $\varphi_0(t, p) = \alpha_p(t)$. This is $R$-bilinear: linearity in $t$ holds because $\alpha_p$ is a homomorphism, and linearity in $p$ can be verified on pure tensors $t = m \otimes n$ using $\varphi_0(m \otimes n, p_1 + p_2) = m \otimes (n \otimes (p_1 + p_2)) = m \otimes (n \otimes p_1 + n \otimes p_2) = m \otimes (n \otimes p_1) + m \otimes (n \otimes p_2)$, then extending by linearity. By the universal property of $(M \otimes_R N) \otimes_R P$, there exists a unique homomorphism
\begin{align*}
\varphi: (M \otimes_R N) \otimes_R P \to M \otimes_R (N \otimes_R P), \quad (m \otimes n) \otimes p \mapsto m \otimes (n \otimes p).
\end{align*}
By the symmetric argument, there exists $\psi: M \otimes_R (N \otimes_R P) \to (M \otimes_R N) \otimes_R P$ with $\psi(m \otimes (n \otimes p)) = (m \otimes n) \otimes p$. On generators of the form $(m \otimes n) \otimes p$, we have $(\psi \circ \varphi)((m \otimes n) \otimes p) = (m \otimes n) \otimes p$, and on generators $m \otimes (n \otimes p)$, we have $(\varphi \circ \psi)(m \otimes (n \otimes p)) = m \otimes (n \otimes p)$. Since these generators span their respective modules, $\varphi$ and $\psi$ are mutually inverse.
[/step]
[step:Prove distributivity: $\left(\bigoplus_{i \in I} M_i\right) \otimes_R P \cong \bigoplus_{i \in I} (M_i \otimes_R P)$]
Define the map $\varphi_0: \left(\bigoplus_{i \in I} M_i\right) \times P \to \bigoplus_{i \in I}(M_i \otimes_R P)$ by $\varphi_0((m_i)_{i \in I}, p) = (m_i \otimes p)_{i \in I}$. This is well-defined because each $(m_i)_{i \in I} \in \bigoplus_{i \in I} M_i$ has only finitely many nonzero components, so $(m_i \otimes p)_{i \in I}$ also has only finitely many nonzero components and belongs to $\bigoplus_{i \in I}(M_i \otimes_R P)$.
We verify $R$-bilinearity. For $(m_i)_{i \in I}, (m_i')_{i \in I} \in \bigoplus_{i \in I} M_i$ and $p \in P$:
\begin{align*}
\varphi_0((m_i + m_i')_{i \in I}, p) = ((m_i + m_i') \otimes p)_{i \in I} = (m_i \otimes p + m_i' \otimes p)_{i \in I} = (m_i \otimes p)_{i \in I} + (m_i' \otimes p)_{i \in I}.
\end{align*}
For $r \in R$: $\varphi_0((rm_i)_{i \in I}, p) = ((rm_i) \otimes p)_{i \in I} = (r(m_i \otimes p))_{i \in I} = r \cdot (m_i \otimes p)_{i \in I}$. Linearity in $p$ follows similarly from $(m_i \otimes (p + p'))_{i \in I} = (m_i \otimes p)_{i \in I} + (m_i \otimes p')_{i \in I}$.
By the universal property of $\left(\bigoplus_{i \in I} M_i\right) \otimes_R P$, there exists a unique $R$-module homomorphism
\begin{align*}
\varphi: \left(\bigoplus_{i \in I} M_i\right) \otimes_R P \to \bigoplus_{i \in I}(M_i \otimes_R P), \quad (m_i)_{i \in I} \otimes p \mapsto (m_i \otimes p)_{i \in I}.
\end{align*}
For the inverse, fix $i_0 \in I$ and define $\beta_{i_0}: M_{i_0} \times P \to \left(\bigoplus_{i \in I} M_i\right) \otimes_R P$ by $\beta_{i_0}(m, p) = \iota_{i_0}(m) \otimes p$, where $\iota_{i_0}: M_{i_0} \to \bigoplus_{i \in I} M_i$ is the canonical inclusion (the element with $m$ in position $i_0$ and $0$ elsewhere). This is $R$-bilinear, so by the universal property of $M_{i_0} \otimes_R P$, there exists a unique homomorphism $\psi_{i_0}: M_{i_0} \otimes_R P \to \left(\bigoplus_{i \in I} M_i\right) \otimes_R P$ with $\psi_{i_0}(m \otimes p) = \iota_{i_0}(m) \otimes p$.
By the universal property of the direct sum $\bigoplus_{i \in I}(M_i \otimes_R P)$, the family $(\psi_{i_0})_{i_0 \in I}$ assembles into a unique homomorphism
\begin{align*}
\psi: \bigoplus_{i \in I}(M_i \otimes_R P) \to \left(\bigoplus_{i \in I} M_i\right) \otimes_R P
\end{align*}
satisfying $\psi|_{M_{i_0} \otimes_R P} = \psi_{i_0}$ for each $i_0 \in I$.
We verify that $\psi$ and $\varphi$ are mutually inverse. On a pure tensor $(m_i)_{i \in I} \otimes p$ in $\left(\bigoplus_{i \in I} M_i\right) \otimes_R P$, write $(m_i)_{i \in I} = \sum_{i \in J} \iota_i(m_i)$ where $J \subseteq I$ is the finite set of indices with $m_i \neq 0$. Then
\begin{align*}
(\psi \circ \varphi)((m_i)_{i \in I} \otimes p) &= \psi((m_i \otimes p)_{i \in I}) = \sum_{i \in J} \psi_i(m_i \otimes p) = \sum_{i \in J} \iota_i(m_i) \otimes p = (m_i)_{i \in I} \otimes p.
\end{align*}
Conversely, on a generator $m \otimes p$ of the summand $M_{i_0} \otimes_R P$:
\begin{align*}
(\varphi \circ \psi_{i_0})(m \otimes p) = \varphi(\iota_{i_0}(m) \otimes p) = (\delta_{i, i_0} \cdot m \otimes p)_{i \in I} = m \otimes p \in M_{i_0} \otimes_R P,
\end{align*}
where $\delta_{i,i_0}$ denotes the Kronecker delta (interpreted as: the $i$-th component is $m \otimes p$ if $i = i_0$ and $0$ otherwise). Since these generators span, $\varphi \circ \psi = \operatorname{id}$ and $\psi \circ \varphi = \operatorname{id}$.
[guided]
The distributivity isomorphism is the most involved because it requires constructing the inverse via the universal property of the direct sum, not just the tensor product. Let us trace through the construction carefully.
**Forward map.** We define $\varphi_0: \left(\bigoplus_{i \in I} M_i\right) \times P \to \bigoplus_{i \in I}(M_i \otimes_R P)$ by $\varphi_0((m_i)_{i \in I}, p) = (m_i \otimes p)_{i \in I}$. Why is this well-defined? An element $(m_i)_{i \in I} \in \bigoplus_{i \in I} M_i$ has only finitely many nonzero entries, so the tuple $(m_i \otimes p)_{i \in I}$ also has only finitely many nonzero entries and lies in the direct sum (not the direct product). Bilinearity is verified componentwise: in each coordinate $i$, the map $m_i \mapsto m_i \otimes p$ is $R$-linear, and $p \mapsto m_i \otimes p$ is $R$-linear.
The universal property of the tensor product then gives $\varphi: \left(\bigoplus_{i \in I} M_i\right) \otimes_R P \to \bigoplus_{i \in I}(M_i \otimes_R P)$ with $\varphi((m_i)_{i \in I} \otimes p) = (m_i \otimes p)_{i \in I}$.
**Inverse map.** We need to go backwards. For each $i_0 \in I$, define $\beta_{i_0}: M_{i_0} \times P \to \left(\bigoplus_{i \in I} M_i\right) \otimes_R P$ by $(m, p) \mapsto \iota_{i_0}(m) \otimes p$, where $\iota_{i_0}: M_{i_0} \hookrightarrow \bigoplus_{i \in I} M_i$ is the canonical inclusion. This is $R$-bilinear (the tensor product is bilinear in its arguments, and $\iota_{i_0}$ is $R$-linear). By the universal property of $M_{i_0} \otimes_R P$, we obtain $\psi_{i_0}: M_{i_0} \otimes_R P \to \left(\bigoplus_{i \in I} M_i\right) \otimes_R P$ with $\psi_{i_0}(m \otimes p) = \iota_{i_0}(m) \otimes p$.
Now we need a single map from the whole direct sum. The universal property of $\bigoplus_{i \in I}(M_i \otimes_R P)$ says: given homomorphisms $\psi_{i_0}: M_{i_0} \otimes_R P \to T$ for each $i_0 \in I$, there is a unique homomorphism $\psi: \bigoplus_{i \in I}(M_i \otimes_R P) \to T$ restricting to $\psi_{i_0}$ on each summand. Taking $T = \left(\bigoplus_{i \in I} M_i\right) \otimes_R P$ gives the desired $\psi$.
**Two-sided inverse.** For $\psi \circ \varphi$: starting from $(m_i)_{i \in I} \otimes p$, we have $\varphi$ sends it to $(m_i \otimes p)_{i \in I}$. Writing $(m_i)_{i \in I} = \sum_{i \in J} \iota_i(m_i)$ for the finite support $J$, we compute $\psi((m_i \otimes p)_{i \in I}) = \sum_{i \in J} \psi_i(m_i \otimes p) = \sum_{i \in J} \iota_i(m_i) \otimes p = (\sum_{i \in J} \iota_i(m_i)) \otimes p = (m_i)_{i \in I} \otimes p$, using linearity of $\otimes$ in the first argument.
For $\varphi \circ \psi$: on a generator $m \otimes p$ in the $i_0$-th summand, $\psi_{i_0}(m \otimes p) = \iota_{i_0}(m) \otimes p$, and $\varphi(\iota_{i_0}(m) \otimes p) = (\delta_{i,i_0} \cdot m \otimes p)_{i \in I}$, which is precisely $m \otimes p$ in the $i_0$-th summand. So $\varphi \circ \psi$ is the identity on generators, hence on the whole module.
[/guided]
[/step]
[step:Prove the unit isomorphism: $R \otimes_R M \cong M$]
Define $\varphi_0: R \times M \to M$ by $\varphi_0(r, m) = rm$. This is $R$-bilinear: $\varphi_0(r_1 + r_2, m) = (r_1 + r_2)m = r_1 m + r_2 m$, $\varphi_0(sr, m) = (sr)m = s(rm) = s \cdot \varphi_0(r, m)$, and $\varphi_0(r, m_1 + m_2) = r(m_1 + m_2) = rm_1 + rm_2$. Also $\varphi_0(r, sm) = r(sm) = (rs)m$ and $\varphi_0(rs, m) = (rs)m$, confirming the $R$-balance condition. By the universal property, there exists a unique homomorphism $\varphi: R \otimes_R M \to M$ with $\varphi(r \otimes m) = rm$.
Define the inverse $\psi: M \to R \otimes_R M$ by $\psi(m) = 1_R \otimes m$. This is $R$-linear: $\psi(m_1 + m_2) = 1_R \otimes (m_1 + m_2) = 1_R \otimes m_1 + 1_R \otimes m_2$ and $\psi(rm) = 1_R \otimes (rm) = r \cdot (1_R \otimes m) = r \cdot \psi(m)$, where the last equality uses the $R$-balance relation $1_R \otimes (rm) = (1_R \cdot r) \otimes m = r \otimes m = r \cdot (1_R \otimes m)$.
We verify: $(\varphi \circ \psi)(m) = \varphi(1_R \otimes m) = 1_R \cdot m = m$, so $\varphi \circ \psi = \operatorname{id}_M$. For $(\psi \circ \varphi)(r \otimes m) = \psi(rm) = 1_R \otimes (rm) = r \cdot (1_R \otimes m) = r \otimes m$, so $\psi \circ \varphi = \operatorname{id}$ on pure tensors, hence on all of $R \otimes_R M$.
[/step]
[step:Prove the quotient isomorphism: $(M/M') \otimes_R (N/N') \cong (M \otimes_R N)/L$]
Let $\pi_M: M \to M/M'$ and $\pi_N: N \to N/N'$ denote the canonical projections. Define $\varphi_0: (M/M') \times (N/N') \to (M \otimes_R N)/L$ by $\varphi_0(m + M', n + N') = m \otimes n + L$.
We verify well-definedness: if $m + M' = m_1 + M'$ and $n + N' = n_1 + N'$, then $m - m_1 \in M'$ and $n - n_1 \in N'$. We compute $m \otimes n - m_1 \otimes n_1 = m \otimes n - m_1 \otimes n + m_1 \otimes n - m_1 \otimes n_1 = (m - m_1) \otimes n + m_1 \otimes (n - n_1)$. Since $m - m_1 \in M'$, the element $(m - m_1) \otimes n$ lies in $L$. Since $n - n_1 \in N'$, the element $m_1 \otimes (n - n_1)$ lies in $L$. Hence $m \otimes n - m_1 \otimes n_1 \in L$, confirming $m \otimes n + L = m_1 \otimes n_1 + L$.
The map $\varphi_0$ is $R$-bilinear (inherited from the bilinearity of $(m, n) \mapsto m \otimes n + L$). By the universal property, there exists a unique homomorphism $\varphi: (M/M') \otimes_R (N/N') \to (M \otimes_R N)/L$ with $\varphi((m + M') \otimes (n + N')) = m \otimes n + L$.
For the inverse, define $\psi_0: M \times N \to (M/M') \otimes_R (N/N')$ by $\psi_0(m, n) = (m + M') \otimes (n + N')$. This is $R$-bilinear, so there exists $\widetilde{\psi}: M \otimes_R N \to (M/M') \otimes_R (N/N')$ with $\widetilde{\psi}(m \otimes n) = (m + M') \otimes (n + N')$. For $m' \in M'$ and $n \in N$: $\widetilde{\psi}(m' \otimes n) = (m' + M') \otimes (n + N') = 0 \otimes (n + N') = 0$. Similarly, $\widetilde{\psi}(m \otimes n') = 0$ for $n' \in N'$. Hence $L \subseteq \ker \widetilde{\psi}$. By the first isomorphism theorem, $\widetilde{\psi}$ factors through $(M \otimes_R N)/L$, yielding $\psi: (M \otimes_R N)/L \to (M/M') \otimes_R (N/N')$ with $\psi(m \otimes n + L) = (m + M') \otimes (n + N')$.
On generators: $(\psi \circ \varphi)((m + M') \otimes (n + N')) = \psi(m \otimes n + L) = (m + M') \otimes (n + N')$, so $\psi \circ \varphi = \operatorname{id}$. Also $(\varphi \circ \psi)(m \otimes n + L) = \varphi((m + M') \otimes (n + N')) = m \otimes n + L$, so $\varphi \circ \psi = \operatorname{id}$. This completes the proof.
[/step]