Direct product is cancellative for finite groups. Let $A, B, C$ be finite abelian groups such that $A\oplus B\cong A\oplus C$. Then $B\cong C$. $(*)$
Is there an elementary proof for the result $(*)$ above?
All the proofs that I have seen thus far either use results which require $(*)$ to be proven (and thus making a circular argument), or they use advanced concepts and theorems, which make the proof appear like magic, with no or little intuition for why $(*)$ is true.
I don't mind the length or the difficulty, as long as it's elementary (without using theorems like: the fundemntal theorem of abelian groups or Krull-Remak-Schmidt theorem).
 A: Here's a completely elementary proof. 
It goes as follows : 


*

*The isomorphism implies a bijection and thus an equality of cardinals : $|B| = |C|$. It thus suffices to prove that there exists an injective morphism $B\to C$

*Letting $I(G,H)$ denote the set of injective morphisms $G\to H$, $i(G,H)$ its cardinal, it suffices to show that $i(B,C) \geq 1$. Knowing that $i(B,B) \geq 1$, it thus suffices to show $i(B,B) = i(B,C)$. 

*Let $\hom(G,H)$ denote the set of group morphisms from $G\to H$ and $h(G,H)$ its cardinal. We have, for all groups $G$, $\hom(G,A\oplus B) \cong \hom(G,A)\times \hom(G,B)$ (this is a classical property of the direct sum, I advise you to make sure you understand it). 

*Since for all $G, \hom(G,A) \neq \emptyset$ (there's always the trivial morphism), for any group $G$, we have $h(G,A\oplus B) = h(G,A)h(G,B)$, $h(G,A\oplus C) = h(G,A)h(G,C)$ and $A\oplus C\cong A\oplus B$ implies $h(G,A\oplus B) = h(G,A\oplus C)$, so that for all $G$, $h(G,B) = h(G,C)$. 

*Let $G,K$ be a arbitrary groups. Then $\hom(G,K)= \bigsqcup_{H\triangleleft G}\{f: G\to K\mid \ker(f) = H\}$ and so $\hom(G,K)\cong \bigsqcup_{H\triangleleft G}I(G/H,K)$ (a morphism $G\to K$ with kernel $H$ corresponds precisely to an injective morphism $G/H\to K$)

*Therefore $h(G,K) = \sum_{H\triangleleft G}i(G/H,K)$ by taking cardinalities. 

*One may thus prove, by induction on $|G|$, that if $h(G,K)= h(G,L)$ for all finite $G$ ($K,L$ fixed), then for all finite $G$, $i(G,K) = i(G,L)$ (Proof : assume $i(G,K) = i(G,L)$ for all $G$ of cardinality $<n$ and let $G$ have cardinality $n$. Then for all $\{1\}\neq H\triangleleft G$, $G/H$ has cardinality $<n$ and so $i(G/H,K) = i(G/H,L)$ by induction hypothesis. Since we also have $h(G,K) = h(G,L)$ by hypothesis, substracting things in the previous equality yields $i(G,K) = i(G,L)$)

*We conclude : By the $4$th point, $h(G,B) = h(G,C)$ for all finite groups $G$, so that by the previous point $i(G,B) = i(G,C)$ for all $G$. Apply this to $G= B$ and we get $i(B,B) = i(B,C)$, which is enough by the $2$nd point. 
