sig
  exception Bug of string
  exception Finally of exn * exn
  exception Validation_error of string list
  exception Unimplemented of string
  type decimal = float
  val sexp_of_decimal : decimal -> Sexplib.Sexp.t
  val decimal_of_sexp : Sexplib.Sexp.t -> decimal
  val bin_size_decimal : decimal Bin_prot.Size.sizer
  val bin_write_decimal : decimal Bin_prot.Write_ml.writer
  val bin_write_decimal_ : decimal Bin_prot.Unsafe_write_c.writer
  val bin_writer_decimal : decimal Bin_prot.Type_class.writer
  val bin_read_decimal : decimal Bin_prot.Read_ml.reader
  val bin_read_decimal_ : decimal Bin_prot.Unsafe_read_c.reader
  val bin_read_decimal__ : (int -> decimal) Bin_prot.Unsafe_read_c.reader
  val bin_reader_decimal : decimal Bin_prot.Type_class.reader
  val bin_decimal : decimal Bin_prot.Type_class.t
  type 'a set = 'PSet.t
  type ('a, 'b) map = ('a, 'b) PMap.t
  type ('a, 'b) result = ('a, 'b) Result.t = Ok of '| Error of 'b
  type 'a bound = 'Common.bound = Incl of '| Excl of '| Unbounded
  type passfail = Common.passfail = Pass | Fail of string
  type immutable = Common.immutable
  val bin_size_immutable : immutable Bin_prot.Size.sizer
  val bin_write_immutable : immutable Bin_prot.Write_ml.writer
  val bin_write_immutable_ : immutable Bin_prot.Unsafe_write_c.writer
  val bin_writer_immutable : immutable Bin_prot.Type_class.writer
  val bin_read_immutable : immutable Bin_prot.Read_ml.reader
  val bin_read_immutable_ : immutable Bin_prot.Unsafe_read_c.reader
  val bin_read_immutable__ : (int -> immutable) Bin_prot.Unsafe_read_c.reader
  val bin_reader_immutable : immutable Bin_prot.Type_class.reader
  val bin_immutable : immutable Bin_prot.Type_class.t
  val sexp_of_immutable : immutable -> Sexplib.Sexp.t
  val immutable_of_sexp : Sexplib.Sexp.t -> immutable
  type read_only = Common.read_only
  val bin_size_read_only : read_only Bin_prot.Size.sizer
  val bin_write_read_only : read_only Bin_prot.Write_ml.writer
  val bin_write_read_only_ : read_only Bin_prot.Unsafe_write_c.writer
  val bin_writer_read_only : read_only Bin_prot.Type_class.writer
  val bin_read_read_only : read_only Bin_prot.Read_ml.reader
  val bin_read_read_only_ : read_only Bin_prot.Unsafe_read_c.reader
  val bin_read_read_only__ : (int -> read_only) Bin_prot.Unsafe_read_c.reader
  val bin_reader_read_only : read_only Bin_prot.Type_class.reader
  val bin_read_only : read_only Bin_prot.Type_class.t
  val sexp_of_read_only : read_only -> Sexplib.Sexp.t
  val read_only_of_sexp : Sexplib.Sexp.t -> read_only
  type read_write = Common.read_write
  val bin_size_read_write : read_write Bin_prot.Size.sizer
  val bin_write_read_write : read_write Bin_prot.Write_ml.writer
  val bin_write_read_write_ : read_write Bin_prot.Unsafe_write_c.writer
  val bin_writer_read_write : read_write Bin_prot.Type_class.writer
  val bin_read_read_write : read_write Bin_prot.Read_ml.reader
  val bin_read_read_write_ : read_write Bin_prot.Unsafe_read_c.reader
  val bin_read_read_write__ :
    (int -> read_write) Bin_prot.Unsafe_read_c.reader
  val bin_reader_read_write : read_write Bin_prot.Type_class.reader
  val bin_read_write : read_write Bin_prot.Type_class.t
  val sexp_of_read_write : read_write -> Sexplib.Sexp.t
  val read_write_of_sexp : Sexplib.Sexp.t -> read_write
  type write_only = Common.write_only
  val bin_size_write_only : write_only Bin_prot.Size.sizer
  val bin_write_write_only : write_only Bin_prot.Write_ml.writer
  val bin_write_write_only_ : write_only Bin_prot.Unsafe_write_c.writer
  val bin_writer_write_only : write_only Bin_prot.Type_class.writer
  val bin_read_write_only : write_only Bin_prot.Read_ml.reader
  val bin_read_write_only_ : write_only Bin_prot.Unsafe_read_c.reader
  val bin_read_write_only__ :
    (int -> write_only) Bin_prot.Unsafe_read_c.reader
  val bin_reader_write_only : write_only Bin_prot.Type_class.reader
  val bin_write_only : write_only Bin_prot.Type_class.t
  val sexp_of_write_only : write_only -> Sexplib.Sexp.t
  val write_only_of_sexp : Sexplib.Sexp.t -> write_only
  val ( % ) : int -> int -> int
  val ( /% ) : int -> int -> int
  val protectx : f:('-> 'b) -> '-> finally:('-> unit) -> 'b
  val protect : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a
  val critical_section : Mutex.t -> f:(unit -> 'a) -> 'a
  val read_wrap : ?binary:bool -> f:(in_channel -> 'a) -> string -> 'a
  val write_wrap : ?binary:bool -> f:(out_channel -> 'a) -> string -> 'a
  val input_lines : ?fix_win_eol:bool -> in_channel -> string list
  val fst3 : 'a * 'b * '-> 'a
  val snd3 : 'a * 'b * '-> 'b
  val trd3 : 'a * 'b * '-> 'c
  val opt_map : ('-> 'b) -> 'a option -> 'b option
  val may : ('-> unit) -> 'a option -> unit
  val uw : 'a option -> 'a
  val uw_default : '-> 'a option -> 'a
  val forever : (unit -> unit) -> exn
  external ident : '-> 'a = "%identity"
  val ascending : '-> '-> int
  val descending : '-> '-> int
  val ( |! ) : '-> ('-> 'b) -> 'b
  val ( ||> ) : ('-> 'b) -> ('-> 'c) -> '-> 'c
  val ( <|| ) : ('-> 'b) -> ('-> 'a) -> '-> 'b
  val ( ^/ ) : string -> string -> string
  val failwithf : ('a, unit, string, unit -> 'b) format4 -> 'a
  val invalid_argf : ('a, unit, string, unit -> 'b) format4 -> 'a
  val register_pretty_printer : string -> unit
  val register_exn_converter : (exn -> string option) -> unit
  val exn_to_string : exn -> string
  val sexp_of_exn : exn -> Sexplib.Sexp.t
end