`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 sub : int -> int -> int = "%subint"
external mul : int -> int -> int = "%mulint"
external div : int -> int -> int = "%divint"
external rem : int -> int -> int = "%modint"
val fdiv : int -> int -> int
val cdiv : int -> int -> int
val ediv : int -> int -> int
val erem : int -> int -> int
external succ : int -> int = "%succint"
external pred : int -> int = "%predint"
val abs : int -> int
val max_int : int
val min_int : int
external logand : int -> int -> int = "%andint"
external logor : int -> int -> int = "%orint"
external logxor : int -> int -> int = "%xorint"
val lognot : int -> int
external shift_left : int -> int -> int = "%lslint"
external shift_right : int -> int -> int = "%asrint"
external shift_right_logical : int -> int -> int = "%lsrint"
val equal : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int
val popcount : Int.t -> int
val unsigned_bitsize : Int.t -> int
val signed_bitsize : Int.t -> int
val leading_zeros : Int.t -> int
val leading_sign_bits : Int.t -> int
val trailing_zeros : Int.t -> int
external to_float : int -> float = "%floatofint"
external of_float : float -> int = "%intoffloat"
val to_string : int -> string
val seeded_hash : int -> int -> int
val hash : int -> int
end`