let rec add = function
  m, n -> if is_zero (n)
            then m
            else if is_one (n)
                   then if is_zero (m)
                          then n
                          else if is_one (m)
                                 then sucsuc (zero ())
                                 else sucsuc (add (prepre (m), n))
                   else sucsuc (add (m, prepre (n)))