Universality of tensor product from monoidal structure As a follow-up to this previous question of mine, I'm trying to understand how to obtain tensor products from internal homs.
I'm having a lot of difficulties and have found myself stuck already in $\mathsf{Ab}$. The internal hom is just the usual hom, hom-sets equipped with pointwise operations. I want to:

  
*
  
*Construct the tensor product $-\otimes A$ of abelian groups as the    left adjoint to $\mathsf{hom}(A,-)$
  
*Use the adjunction to prove $\otimes$ is universal with respect to    bilinearity.
  

How might I do these things?
 A: Suppose that $\mathsf{hom}(A, -)$ has a left adjoint $T_A$. In other words you have a natural (in $B$, $C$) isomorphism $$\mathsf{Ab}(A, \mathsf{hom}(B,C)) \cong \mathsf{Ab}(T_A(B), C).$$
Since $\mathsf{hom}(\mathbb{Z}, C) \cong C$, it follows that $T_A(\mathbb{Z}) \cong A$. As all left adjoint, $T_A$ preserves colimits, so for any family $\{\alpha\}$, $$T_A(\bigoplus_\alpha \mathbb{Z}_\alpha) \cong \bigoplus_\alpha \mathbb{Z}_\alpha.$$
(Here $\mathbb{Z}_\alpha$ and $\mathbb{Z}_\alpha$ are just copies of $\mathbb{Z}$ and $A$, the index is here only for bookkeeping purposes.)
Now it's a general fact that any abelian group $B$ has presentation, that is you can write $B$ as a cokernel of the form
$$B \cong \operatorname{coker} \left( \bigoplus_\beta \mathbb{Z}_\beta \to \bigoplus_\alpha \mathbb{Z}_\alpha \right),$$
where the $\alpha$ correspond to generators of $B$, and the $\beta$ are generators of the kernel of the projection to $B$ of the free abelian group with basis given by the generators of $B$. In more detail, you can see that the $\beta$ correspond to the nontrivial linear relations that arise in $B$ between the $b_\alpha$.
Since a cokernel is a kind of colimit, it is again preserved by $T_A$, hence:
$$T_A(B) \cong \operatorname{coker} \left( \bigoplus_\beta A_\beta \to \bigoplus_\alpha A_\alpha \right).$$
What does this $T_A(B)$ look like? For every generator $b_\alpha \in B$ you have a module, let's call it $b_\alpha \tilde\otimes A$ isomorphic to $A$, and a projection $\bigoplus_\alpha b_\alpha \otimes A \to T_A(B)$. Let's denote $b_\alpha \otimes a$ the elements of $b_\alpha \tilde\otimes A$, where $a \in A$, and similarly for the $\beta$.
An element is in the kernel of this projection iff it is in $\bigoplus_\beta b_\beta \otimes A$, where the $b_\beta$ are generators of $\operatorname{ker} \left( \bigoplus_\alpha b_\alpha \mathbb{Z} \to B \right)$. It's starting to look an awful lot like the tensor product $B \otimes A$.
Compare this to the usual presentation of the tensor product of two abelian groups:
$$B \otimes A = \left\langle b \otimes a_{b \in B, a \in A} : (b+b') \otimes a = b \otimes a + b' \otimes a, b \otimes (a + a') = b \otimes a + b \otimes a' \right\rangle.$$
You can then define a morphism $\bigoplus_\alpha b_\alpha \tilde\otimes A \to B \otimes A$, $b_\alpha \tilde\otimes a \mapsto b_\alpha \otimes a$. Then it's surjective, and its kernel is precisely $\bigoplus b_\beta \tilde\otimes A$. Hence $T_A(B) \cong B \otimes A$. Now it's a matter of checking that everything is natural, which is a painful but straightforward task.
Of course if I had assumed from the start that $T_A(B) = B \otimes A$ is would have been a lot quicker, but this way you can see how one could "guess" that it's the tensor product. A similar demonstration should also apply in categories where every object has a free resolution of finite length, though it can get very complicated.
Now for the universal property related to bilinearity, define a natural isomorphism $\operatorname{Bilin}(A \times B, C) \cong \mathsf{Ab}(A, \mathsf{hom}(B,C))$ by $\varphi \mapsto (a \mapsto (b \mapsto \varphi(a,b)))$. It's easily seen to be a group isomorphism.
