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 min : int -> int -> int   val max : int -> int -> int   val mid : int -> int -> int   val popcount : int -> int   val copysign : int -> int -> int   val popcount_sparse : int -> int   val operations : int BatNumber.numeric   val ( -- ) : BatInt.t -> BatInt.t -> BatInt.t BatEnum.t   val ( --- ) : BatInt.t -> BatInt.t -> BatInt.t BatEnum.t   external of_int : int -> int = "%identity"   external to_int : int -> int = "%identity"   module Infix :     sig       type bat__infix_t = t       val ( + ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( - ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( * ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( / ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( ** ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( -- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t       val ( --- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t     end   module Compare :     sig       type bat__compare_t = t       val ( <> ) : bat__compare_t -> bat__compare_t -> bool       val ( >= ) : bat__compare_t -> bat__compare_t -> bool       val ( <= ) : bat__compare_t -> bat__compare_t -> bool       val ( > ) : bat__compare_t -> bat__compare_t -> bool       val ( < ) : bat__compare_t -> bat__compare_t -> bool       val ( = ) : bat__compare_t -> bat__compare_t -> bool     end   val print : 'BatInnerIO.output -> int -> unit   val print_hex : 'BatInnerIO.output -> int -> unit   val compare : BatInt.t -> BatInt.t -> int   val equal : BatInt.t -> BatInt.t -> bool   val ord : BatInt.t -> BatInt.t -> BatOrd.order   module Safe_int :     sig       type t = int       val zero : BatInt.Safe_int.t       val one : BatInt.Safe_int.t       val minus_one : BatInt.Safe_int.t       val neg : BatInt.Safe_int.t -> BatInt.Safe_int.t       val add : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val ( + ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val sub : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val ( - ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val mul : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val ( * ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       external div :         BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t         = "%divint"       external ( / ) :         BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t         = "%divint"       external rem :         BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t         = "%modint"       external modulo :         BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t         = "%modint"       val pow : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val ( ** ) :         BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatInt.Safe_int.t       val ( <> ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val ( > ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val ( < ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val ( >= ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val ( <= ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val ( = ) : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val max_num : BatInt.Safe_int.t       val min_num : BatInt.Safe_int.t       val succ : BatInt.Safe_int.t -> BatInt.Safe_int.t       val pred : BatInt.Safe_int.t -> BatInt.Safe_int.t       val abs : BatInt.Safe_int.t -> BatInt.Safe_int.t       external of_float : float -> BatInt.Safe_int.t = "%intoffloat"       external to_float : BatInt.Safe_int.t -> float = "%floatofint"       val of_string : string -> BatInt.Safe_int.t       val to_string : BatInt.Safe_int.t -> string       val operations : BatInt.Safe_int.t BatNumber.numeric       external of_int : int -> BatInt.Safe_int.t = "%identity"       external to_int : BatInt.Safe_int.t -> int = "%identity"       module Infix :         sig           type bat__infix_t = t           val ( + ) : bat__infix_t -> bat__infix_t -> bat__infix_t           val ( - ) : bat__infix_t -> bat__infix_t -> bat__infix_t           val ( * ) : bat__infix_t -> bat__infix_t -> bat__infix_t           val ( / ) : bat__infix_t -> bat__infix_t -> bat__infix_t           val ( ** ) : bat__infix_t -> bat__infix_t -> bat__infix_t           val ( -- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t           val ( --- ) :             bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t         end       module Compare :         sig           type bat__compare_t = t           val ( <> ) : bat__compare_t -> bat__compare_t -> bool           val ( >= ) : bat__compare_t -> bat__compare_t -> bool           val ( <= ) : bat__compare_t -> bat__compare_t -> bool           val ( > ) : bat__compare_t -> bat__compare_t -> bool           val ( < ) : bat__compare_t -> bat__compare_t -> bool           val ( = ) : bat__compare_t -> bat__compare_t -> bool         end       val print : 'BatInnerIO.output -> BatInt.Safe_int.t -> unit       val compare : BatInt.Safe_int.t -> BatInt.Safe_int.t -> int       val equal : BatInt.Safe_int.t -> BatInt.Safe_int.t -> bool       val ord : BatInt.Safe_int.t -> BatInt.Safe_int.t -> BatOrd.order     end end