sig
  module type S =
    sig
      type t
      val zero : Nocrypto.Numeric.S.t
      val one : Nocrypto.Numeric.S.t
      val ( lsr ) : Nocrypto.Numeric.S.t -> int -> Nocrypto.Numeric.S.t
      val ( lsl ) : Nocrypto.Numeric.S.t -> int -> Nocrypto.Numeric.S.t
      val ( land ) :
        Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val ( lor ) :
        Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val ( lxor ) :
        Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val ( + ) :
        Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val ( - ) :
        Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val succ : Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val pred : Nocrypto.Numeric.S.t -> Nocrypto.Numeric.S.t
      val of_int : int -> Nocrypto.Numeric.S.t
      val of_int32 : int32 -> Nocrypto.Numeric.S.t
      val of_int64 : int64 -> Nocrypto.Numeric.S.t
      val to_int : Nocrypto.Numeric.S.t -> int
      val to_int32 : Nocrypto.Numeric.S.t -> int32
      val to_int64 : Nocrypto.Numeric.S.t -> int64
      val bit_bound : Nocrypto.Numeric.S.t -> int
      val pp_print : Format.formatter -> Nocrypto.Numeric.S.t -> unit
      val bits : Nocrypto.Numeric.S.t -> int
      val of_cstruct_be : ?bits:int -> Cstruct.t -> Nocrypto.Numeric.S.t
      val to_cstruct_be : ?size:int -> Nocrypto.Numeric.S.t -> Cstruct.t
      val into_cstruct_be : Nocrypto.Numeric.S.t -> Cstruct.t -> unit
    end
  module Int :
    sig
      type t = int
      val zero : t
      val one : t
      val ( lsr ) : t -> int -> t
      val ( lsl ) : t -> int -> t
      val ( land ) : t -> t -> t
      val ( lor ) : t -> t -> t
      val ( lxor ) : t -> t -> t
      val ( + ) : t -> t -> t
      val ( - ) : t -> t -> t
      val succ : t -> t
      val pred : t -> t
      val of_int : int -> t
      val of_int32 : int32 -> t
      val of_int64 : int64 -> t
      val to_int : t -> int
      val to_int32 : t -> int32
      val to_int64 : t -> int64
      val bit_bound : t -> int
      val pp_print : Format.formatter -> t -> unit
      val bits : t -> int
      val of_cstruct_be : ?bits:int -> Cstruct.t -> t
      val to_cstruct_be : ?size:int -> t -> Cstruct.t
      val into_cstruct_be : t -> Cstruct.t -> unit
    end
  module Int32 :
    sig
      type t = int32
      val zero : t
      val one : t
      val ( lsr ) : t -> int -> t
      val ( lsl ) : t -> int -> t
      val ( land ) : t -> t -> t
      val ( lor ) : t -> t -> t
      val ( lxor ) : t -> t -> t
      val ( + ) : t -> t -> t
      val ( - ) : t -> t -> t
      val succ : t -> t
      val pred : t -> t
      val of_int : int -> t
      val of_int32 : int32 -> t
      val of_int64 : int64 -> t
      val to_int : t -> int
      val to_int32 : t -> int32
      val to_int64 : t -> int64
      val bit_bound : t -> int
      val pp_print : Format.formatter -> t -> unit
      val bits : t -> int
      val of_cstruct_be : ?bits:int -> Cstruct.t -> t
      val to_cstruct_be : ?size:int -> t -> Cstruct.t
      val into_cstruct_be : t -> Cstruct.t -> unit
    end
  module Int64 :
    sig
      type t = int64
      val zero : t
      val one : t
      val ( lsr ) : t -> int -> t
      val ( lsl ) : t -> int -> t
      val ( land ) : t -> t -> t
      val ( lor ) : t -> t -> t
      val ( lxor ) : t -> t -> t
      val ( + ) : t -> t -> t
      val ( - ) : t -> t -> t
      val succ : t -> t
      val pred : t -> t
      val of_int : int -> t
      val of_int32 : int32 -> t
      val of_int64 : int64 -> t
      val to_int : t -> int
      val to_int32 : t -> int32
      val to_int64 : t -> int64
      val bit_bound : t -> int
      val pp_print : Format.formatter -> t -> unit
      val bits : t -> int
      val of_cstruct_be : ?bits:int -> Cstruct.t -> t
      val to_cstruct_be : ?size:int -> t -> Cstruct.t
      val into_cstruct_be : t -> Cstruct.t -> unit
    end
  module Z :
    sig
      type t = Z.t
      val zero : t
      val one : t
      val ( lsr ) : t -> int -> t
      val ( lsl ) : t -> int -> t
      val ( land ) : t -> t -> t
      val ( lor ) : t -> t -> t
      val ( lxor ) : t -> t -> t
      val ( + ) : t -> t -> t
      val ( - ) : t -> t -> t
      val succ : t -> t
      val pred : t -> t
      val of_int : int -> t
      val of_int32 : int32 -> t
      val of_int64 : int64 -> t
      val to_int : t -> int
      val to_int32 : t -> int32
      val to_int64 : t -> int64
      val bit_bound : t -> int
      val pp_print : Format.formatter -> t -> unit
      val bits : t -> int
      val of_cstruct_be : ?bits:int -> Cstruct.t -> t
      val to_cstruct_be : ?size:int -> t -> Cstruct.t
      val into_cstruct_be : t -> Cstruct.t -> unit
    end
  val pseudoprime : Nocrypto.Numeric.Z.t -> bool
end