sig
  type t = int
  val zero : int
  val one : int
  val minus_one : int
  external neg : int -> int = "%negint"
  external add : int -> int -> int = "%addint"
  external ( + ) : int -> int -> int = "%addint"
  external sub : int -> int -> int = "%subint"
  external ( - ) : int -> int -> int = "%subint"
  external mul : int -> int -> int = "%mulint"
  external ( * ) : int -> int -> int = "%mulint"
  external div : int -> int -> int = "%divint"
  external ( / ) : int -> int -> int = "%divint"
  external rem : int -> int -> int = "%modint"
  external modulo : int -> int -> int = "%modint"
  val pow : int -> int -> int
  val ( ** ) : int -> int -> int
  val ( <> ) : int -> int -> bool
  val ( > ) : int -> int -> bool
  val ( < ) : int -> int -> bool
  val ( >= ) : int -> int -> bool
  val ( <= ) : int -> int -> bool
  val ( = ) : int -> int -> bool
  val min_num : int
  val max_num : int
  external succ : int -> int = "%succint"
  external pred : int -> int = "%predint"
  val abs : int -> int
  external of_float : float -> int = "%intoffloat"
  external to_float : int -> float = "%floatofint"
  val of_string : string -> int
  val to_string : int -> string
  val compare : t -> t -> int
  val operations : int Extlib.Number.numeric
  val ( -- ) : t -> t -> t Extlib.Enum.t
  val ( --- ) : t -> t -> t Extlib.Enum.t
  external of_int : int -> int = "%identity"
  external to_int : int -> int = "%identity"
  val t_of_sexp : Sexplib.Sexp.t -> t
  val sexp_of_t : t -> Sexplib.Sexp.t
  val print : 'Extlib.InnerIO.output -> t -> unit
  val t_printer : t Extlib.Value_printer.t
end