sig
  module type S =
    sig
      type t
      val add : t -> t -> t
      val sub : t -> t -> t
      val mul : t -> t -> t
      val div : t -> t -> t
      val rem : t -> t -> t
      val max_int : t
      val logand : t -> t -> t
      val logor : t -> t -> t
      val logxor : t -> t -> t
      val shift_left : t -> int -> t
      val shift_right : t -> int -> t
      val of_int : int -> t
      val to_int : t -> int
      val of_string : string -> t
      val to_string : t -> string
      val zero : t
      val one : t
      val lognot : t -> t
      val succ : t -> t
      val pred : t -> t
      val compare : t -> t -> int
      val max : t -> t -> t
      val min : t -> t -> t
      module Infix :
        sig
          val ( + ) : t -> t -> t
          val ( - ) : t -> t -> t
          val ( * ) : t -> t -> t
          val ( / ) : t -> t -> t
          val ( mod ) : t -> t -> t
          val ( land ) : t -> t -> t
          val ( lor ) : t -> t -> t
          val ( lxor ) : t -> t -> t
          val ( lsl ) : t -> int -> t
          val ( lsr ) : t -> int -> t
        end
      val neg : t -> t
      val abs : t -> t
      val minus_one : t
      val min_int : t
      val shift_right_logical : t -> int -> t
      val of_nativeint : nativeint -> t
      val to_nativeint : t -> nativeint
      val of_int64 : int64 -> t
      val to_int64 : t -> int64
    end
  module Int :
    sig
      type t = int
      val add : t -> t -> t
      val sub : t -> t -> t
      val mul : t -> t -> t
      val div : t -> t -> t
      val rem : t -> t -> t
      val max_int : t
      val logand : t -> t -> t
      val logor : t -> t -> t
      val logxor : t -> t -> t
      val shift_left : t -> int -> t
      val shift_right : t -> int -> t
      val of_int : int -> t
      val to_int : t -> int
      val of_string : string -> t
      val to_string : t -> string
      val zero : t
      val one : t
      val lognot : t -> t
      val succ : t -> t
      val pred : t -> t
      val compare : t -> t -> int
      val max : t -> t -> t
      val min : t -> t -> t
      module Infix :
        sig
          val ( + ) : t -> t -> t
          val ( - ) : t -> t -> t
          val ( * ) : t -> t -> t
          val ( / ) : t -> t -> t
          val ( mod ) : t -> t -> t
          val ( land ) : t -> t -> t
          val ( lor ) : t -> t -> t
          val ( lxor ) : t -> t -> t
          val ( lsl ) : t -> int -> t
          val ( lsr ) : t -> int -> t
        end
      val neg : t -> t
      val abs : t -> t
      val minus_one : t
      val min_int : t
      val shift_right_logical : t -> int -> t
      val of_nativeint : nativeint -> t
      val to_nativeint : t -> nativeint
      val of_int64 : int64 -> t
      val to_int64 : t -> int64
    end
  module Int32 :
    sig
      type t = int32
      val add : t -> t -> t
      val sub : t -> t -> t
      val mul : t -> t -> t
      val div : t -> t -> t
      val rem : t -> t -> t
      val max_int : t
      val logand : t -> t -> t
      val logor : t -> t -> t
      val logxor : t -> t -> t
      val shift_left : t -> int -> t
      val shift_right : t -> int -> t
      val of_int : int -> t
      val to_int : t -> int
      val of_string : string -> t
      val to_string : t -> string
      val zero : t
      val one : t
      val lognot : t -> t
      val succ : t -> t
      val pred : t -> t
      val compare : t -> t -> int
      val max : t -> t -> t
      val min : t -> t -> t
      module Infix :
        sig
          val ( + ) : t -> t -> t
          val ( - ) : t -> t -> t
          val ( * ) : t -> t -> t
          val ( / ) : t -> t -> t
          val ( mod ) : t -> t -> t
          val ( land ) : t -> t -> t
          val ( lor ) : t -> t -> t
          val ( lxor ) : t -> t -> t
          val ( lsl ) : t -> int -> t
          val ( lsr ) : t -> int -> t
        end
      val neg : t -> t
      val abs : t -> t
      val minus_one : t
      val min_int : t
      val shift_right_logical : t -> int -> t
      val of_nativeint : nativeint -> t
      val to_nativeint : t -> nativeint
      val of_int64 : int64 -> t
      val to_int64 : t -> int64
    end
  module Int64 :
    sig
      type t = int64
      val add : t -> t -> t
      val sub : t -> t -> t
      val mul : t -> t -> t
      val div : t -> t -> t
      val rem : t -> t -> t
      val max_int : t
      val logand : t -> t -> t
      val logor : t -> t -> t
      val logxor : t -> t -> t
      val shift_left : t -> int -> t
      val shift_right : t -> int -> t
      val of_int : int -> t
      val to_int : t -> int
      val of_string : string -> t
      val to_string : t -> string
      val zero : t
      val one : t
      val lognot : t -> t
      val succ : t -> t
      val pred : t -> t
      val compare : t -> t -> int
      val max : t -> t -> t
      val min : t -> t -> t
      module Infix :
        sig
          val ( + ) : t -> t -> t
          val ( - ) : t -> t -> t
          val ( * ) : t -> t -> t
          val ( / ) : t -> t -> t
          val ( mod ) : t -> t -> t
          val ( land ) : t -> t -> t
          val ( lor ) : t -> t -> t
          val ( lxor ) : t -> t -> t
          val ( lsl ) : t -> int -> t
          val ( lsr ) : t -> int -> t
        end
      val neg : t -> t
      val abs : t -> t
      val minus_one : t
      val min_int : t
      val shift_right_logical : t -> int -> t
      val of_nativeint : nativeint -> t
      val to_nativeint : t -> nativeint
      val of_int64 : int64 -> t
      val to_int64 : t -> int64
    end
  module SInt : S
  module Long : S
  module LLong : S
  type sint = SInt.t
  type long = Long.t
  type llong = LLong.t
  val of_byte_size : int -> (module Signed.S)
end