let subtract =
  let rec f = function
    m, n -> if is_zero (n)
              then m
              else pre (f (m, pre (n)))
  in
    function
      m, n -> if greater_than (n, m)
                then failwith ("subtract : the first argument must be >= to the second one")
                else f (m, n)