Putnam 2012, Problem A-2

Let $*$ be a commutative and associative binary operation on a set $S$. Assume that for every $x$ and $y$ in $S$, there exists $z$ in $S$ such that $x * z = y$. (This $z$ may depend on $x$ and $y$.) Show that if $a, b, c$ are in $S$ and $a * c = b * c$, then $a = b$.

Solution:
Write $d$ for $a * c = b * c \in S$. For some $e \in S$, $d * e = a$, and thus for $f = c * e$, $a * f = a * c * e = d * e = a$ and $b * f = b * c * e = d * e = a$. Let $g \in S$ satisfy $g * a = b$; then $b = g * a = g * (a * f) = (g * a) * f = b * f = a$, as desired.

**Remark.** With slightly more work, one can show that $S$ forms an abelian group with the operation $*$.