let ( - ) a b =
      let c = a - b in
      if (a lxor (lnot b)) lor (b lxor c) < 0 then c else raise Overflow