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 BatNumber.numeric
  val ( -- ) : t -> t -> t BatEnum.t
  val ( --- ) : t -> t -> t BatEnum.t
  external of_int : int -> int = "%identity"
  external to_int : int -> int = "%identity"
  val print : 'BatInnerIO.output -> int -> unit
  val xprint : 'BatInnerIO.output -> int -> unit
  val t_printer : t BatValue_printer.t
  module Safe_int :
    sig
      type t = int
      val zero : t
      val one : t
      val minus_one : t
      val neg : t -> t
      val add : t -> t -> t
      val ( + ) : t -> t -> t
      val sub : t -> t -> t
      val ( - ) : t -> t -> t
      val mul : t -> t -> t
      val ( * ) : t -> t -> t
      external div : t -> t -> t = "%divint"
      external ( / ) : t -> t -> t = "%divint"
      external rem : t -> t -> t = "%modint"
      external modulo : t -> t -> t = "%modint"
      val pow : t -> t -> t
      val ( ** ) : t -> t -> t
      val ( <> ) : t -> t -> bool
      val ( > ) : t -> t -> bool
      val ( < ) : t -> t -> bool
      val ( >= ) : t -> t -> bool
      val ( <= ) : t -> t -> bool
      val ( = ) : t -> t -> bool
      val min_num : t
      val max_num : t
      val succ : t -> t
      val pred : t -> t
      val abs : t -> t
      external of_float : float -> t = "%intoffloat"
      external to_float : t -> float = "%floatofint"
      val of_string : string -> t
      val to_string : t -> string
      val compare : t -> t -> int
      val operations : t BatNumber.numeric
      external of_int : int -> t = "%identity"
      external to_int : t -> int = "%identity"
      val print : 'BatInnerIO.output -> t -> unit
    end
end