Show that if $\mathrm{Hom}(P,-)$ preserves short exact sequences, then $P$ is a projective module We let $P$ be a module, I am trying to prove that if $\mathrm{Hom}(P,-)$ preserves short exact sequences, then it is projective, i.e. it preserves all exact sequences (this is the definition I would prefer to use). The proof in my text is incomplete, it says if $ \dots \to M_{i-1} \to M_i \to M_{i+1} \to \dots$ is an exact sequence (where $d_i \colon M_i \to M_{i+1}$ and so on are the homomorphisms) then we may reduce it to short exact sequences as follows: $0 \to \mathrm{Ker } d_i \to M_i \to \mathrm{Im}d_i \to 0 $. This short exact sequence makes sense to me, but I struggle to finish the proof. In particular, I don't see how a map from $\mathrm{Ker}d_i$ to $M_i$ is supposed to induce a map from $\mathrm{Hom}(P,M_{i-1})$ to $\mathrm{Hom}(P,M_i)$, especially since $\mathrm{Ker}d_i$ is a subset of $M_i$ and not $M_{i-1}$. 
I don't know much about exact sequences or category theory so the proof is not very obvious to me. I have checked a few textbooks but none have provided a proof. 
 A: Sketch:
(1) Prove that if $M\xrightarrow{f}N$ is a module-homomorphism, then the image of $f$ is the kernel of the quotient homomorphism $\pi:N\to N/f(N)$. Therefore images are kernels.
(2) If an additive functor betwen abelian categories $F:\mathcal{C}\to\mathcal{D}$ preserves short-exact sequences, then it preserves kernels. Indeed, suppose that $X\xrightarrow{f}Y$ is a morphism in $\mathcal{C}$, then the sequence $0\to\ker(f)\to X\xrightarrow{f}im(f)\to0$ is short-exact, so the sequence
$0\to F(\ker(f))\to FX\xrightarrow{F(f)}F(im(f))\to0$ is short-exact. Therefore $F(\ker(f))$ is the kernel of $FX\xrightarrow{F(f)}FY$, i.e. $F(\ker(f))=\ker(F(f))$.
(comment: If you are not familiar with categorical language, simply ignore the unknown words and apply (2) for $F=\hom(P,-)$, $\mathcal{C}=\text{Modules}$, $\mathcal{D}=\text{Abelian groups}$. 
(3) Since exactness in module categories is of the form $im(d_{i-1})=\ker(d_i)$, apply (1) to write an image as a kernel. Then apply (2) to see that kernels are preserved. Re-write the kernel in the form of an image and this is precisely the desired exactness.
