Category Theory for Programmers Chapter 13: Free Monoids
Challenges

Show that an isomorphism between monoids that preserves multiplication must automatically preserve unit.
Let $A$ and $B$ be monoids and $A \cong B$. Then there exists $f:A \to B$ and $f^{1}:B \to A$ such that $f \circ f^{1} = \mathrm{Id}_B$ and $f^{1} \circ f = \mathrm{Id}_A$. And because $f$ and $f^{1}$ preserve multiplication, we have also that $f(a a’) = f(a) f(a’)$ for all $a, a’ \in A$ and $f^{1}(b b’) = f^{1}(b) f^{1}(b’)$ for all $b,b’ \in B$. Also, because $A$ and $B$ are monoids, there exists $e_A \in A$ such that $a e_A = e_A a = a$ for all $a \in A$ and similarly $e_B \in B$ such that $b e_B = e_B b = b$ for all $b \in B$.
Let $f(a e_A) = f(a) f(e_A) = f(a)$ for all $a \in A$, then $f(e_A)$ is a candidate for identity in $B$ because for all $b \in B$, we have \(b f(e_A) = f(f^{1}(b f(e_A)))\) \(= f(f^{1}(b) f^{1}(f(e_A)))\) \(= f(f^{1}(b) e_A)\) \(= f(f^{1}(b))\) \(= b.\)
Then we have that $e_B f(e_A) = e_B$ by above and $e_B f(e_A) = f(e_A)$ by definition of $e_B$ and so we have that \(e_B f(e_A) = e_B = f(e_A).\)
Similarly, we can show \(e_A f^{1}(e_B) = e_A = f^{1}(e_B).\) \(\blacksquare\)

Consider homomorphism from
([Integer], [], ++)
to $(\mathbb{Z}, 1, \times)$.
What is image of
[]
?Since
[]
is the identity in[Integer]
, the homomorphism preserves structure and so would be mapped to the identity, $1$. 
Assume all singleton lists are mapped to their integers,
[x]
$\mapsto x$. What’s the image of[1, 2, 3, 4]
?Because we don’t need to worry about associativity (property of monoids), we can say that
[1, 2, 3, 4] = [1] ++ [2] ++ [3] ++ [4]
. Then using the assumption above, this maps to $1 \times 2 \times 3 \times 4 = 24$. 
How many lists map to $12$?
The prime factors of $12$ are $2 \times 2 \times 3$ and so we can enumerate all groups of integers that have product 12:
 $2, 2, 3$
 $4, 3$
 $2, 6$
 $12$
 $4, 3$
 $2, 6$
 $2, 2, 3$
 $2, 2, 3$
Including identities, we could have infinitely many.


What is the free monoid generated by a oneelement set?
$(\mathbb{N}, 0, +)$ where the isomorphism given by the length of the list.