Solution (source code)

= Solution

The two constructors encode a <natural number> by its number of successors. <Structural recursion> replaces the zero constructor by zero and every successor by one <addition>:

``
convert :: Natural -> Integer
convert Zero     = 0
convert (Succ n) = 1 + convert n
``

<Structural induction> gives $\boxed{\operatorname{convert}(\operatorname{Succ}^n\operatorname{Zero})=n}$. The output uses unbounded <integers>, so there is no machine-word overflow.