sig
  external raise : exn -> 'a = "%raise"
  val invalid_arg : string -> 'a
  val failwith : string -> 'a
  val exit : int -> 'a
  val at_exit : (unit -> unit) -> unit
  external ( = ) : '-> '-> bool = "%equal"
  external ( <> ) : '-> '-> bool = "%notequal"
  external ( < ) : '-> '-> bool = "%lessthan"
  external ( > ) : '-> '-> bool = "%greaterthan"
  external ( <= ) : '-> '-> bool = "%lessequal"
  external ( >= ) : '-> '-> bool = "%greaterequal"
  external compare : '-> '-> int = "%compare"
  val min : '-> '-> 'a
  val max : '-> '-> 'a
  external ( == ) : '-> '-> bool = "%eq"
  external ( != ) : '-> '-> bool = "%noteq"
  external not : bool -> bool = "%boolnot"
  external ( && ) : bool -> bool -> bool = "%sequand"
  external ( & ) : bool -> bool -> bool = "%sequand"
  external ( || ) : bool -> bool -> bool = "%sequor"
  external ( ~- ) : int -> int = "%negint"
  external succ : int -> int = "%succint"
  external pred : int -> int = "%predint"
  external ( + ) : int -> int -> int = "%addint"
  external ( - ) : int -> int -> int = "%subint"
  external ( * ) : int -> int -> int = "%mulint"
  external ( / ) : int -> int -> int = "%divint"
  external ( mod ) : int -> int -> int = "%modint"
  val abs : int -> int
  val max_int : int
  val min_int : int
  external ( land ) : int -> int -> int = "%andint"
  external ( lor ) : int -> int -> int = "%orint"
  external ( lxor ) : int -> int -> int = "%xorint"
  val lnot : int -> int
  external ( lsl ) : int -> int -> int = "%lslint"
  external ( lsr ) : int -> int -> int = "%lsrint"
  external ( asr ) : int -> int -> int = "%asrint"
  external ( ~-. ) : float -> float = "%negfloat"
  external ( +. ) : float -> float -> float = "%addfloat"
  external ( -. ) : float -> float -> float = "%subfloat"
  external ( *. ) : float -> float -> float = "%mulfloat"
  external ( /. ) : float -> float -> float = "%divfloat"
  external ( ** ) : float -> float -> float = "caml_power_float" "pow"
    "float"
  external sqrt : float -> float = "caml_sqrt_float" "sqrt" "float"
  external exp : float -> float = "caml_exp_float" "exp" "float"
  external log : float -> float = "caml_log_float" "log" "float"
  external log10 : float -> float = "caml_log10_float" "log10" "float"
  external cos : float -> float = "caml_cos_float" "cos" "float"
  external sin : float -> float = "caml_sin_float" "sin" "float"
  external tan : float -> float = "caml_tan_float" "tan" "float"
  external acos : float -> float = "caml_acos_float" "acos" "float"
  external asin : float -> float = "caml_asin_float" "asin" "float"
  external atan : float -> float = "caml_atan_float" "atan" "float"
  external atan2 : float -> float -> float = "caml_atan2_float" "atan2"
    "float"
  external cosh : float -> float = "caml_cosh_float" "cosh" "float"
  external sinh : float -> float = "caml_sinh_float" "sinh" "float"
  external tanh : float -> float = "caml_tanh_float" "tanh" "float"
  external ceil : float -> float = "caml_ceil_float" "ceil" "float"
  external floor : float -> float = "caml_floor_float" "floor" "float"
  external abs_float : float -> float = "%absfloat"
  external mod_float : float -> float -> float = "caml_fmod_float" "fmod"
    "float"
  external frexp : float -> float * int = "caml_frexp_float"
  external ldexp : float -> int -> float = "caml_ldexp_float"
  external modf : float -> float * float = "caml_modf_float"
  external float : int -> float = "%floatofint"
  external float_of_int : int -> float = "%floatofint"
  external truncate : float -> int = "%intoffloat"
  external int_of_float : float -> int = "%intoffloat"
  val infinity : float
  val neg_infinity : float
  val nan : float
  val ( ^ ) : string -> string -> string
  val uppercase : string -> string
  val lowercase : string -> string
  external int_of_char : char -> int = "%identity"
  val char_of_int : int -> char
  external ignore : '-> unit = "%ignore"
  val string_of_char : char -> string
  val string_of_bool : bool -> string
  val bool_of_string : string -> bool
  val string_of_int : int -> string
  external int_of_string : string -> int = "caml_int_of_string"
  val string_of_float : float -> string
  external float_of_string : string -> float = "caml_float_of_string"
  val dump : '-> string
  val ( @ ) : 'a list -> 'a list -> 'a list
  val stdin : Extlib.IO.input
  val stdout : unit Extlib.IO.output
  val stderr : unit Extlib.IO.output
  val stdnull : unit Extlib.IO.output
  val flush_all : unit -> unit
  val print_bool : bool -> unit
  val print_char : char -> unit
  val print_string : string -> unit
  val print_int : int -> unit
  val print_float : float -> unit
  val print_endline : string -> unit
  val print_newline : unit -> unit
  val print_guess : '-> unit
  val print_all : Extlib.IO.input -> unit
  val prerr_bool : bool -> unit
  val prerr_char : char -> unit
  val prerr_string : string -> unit
  val prerr_int : int -> unit
  val prerr_float : float -> unit
  val prerr_endline : string -> unit
  val prerr_newline : unit -> unit
  val prerr_guess : '-> unit
  val prerr_all : Extlib.IO.input -> unit
  val read_line : unit -> string
  val read_int : unit -> int
  val read_float : unit -> float
  val open_out :
    ?mode:Extlib.File.open_out_flag list ->
    ?perm:Extlib.File.permission -> string -> unit Extlib.IO.output
  val open_out_bin : string -> unit Extlib.IO.output
  val open_out_gen : open_flag list -> int -> string -> unit Extlib.IO.output
  val flush : unit Extlib.IO.output -> unit
  val output_char : unit Extlib.IO.output -> char -> unit
  val output_string : unit Extlib.IO.output -> string -> unit
  val output_rope : unit Extlib.IO.output -> Extlib.Rope.t -> unit
  val output : unit Extlib.IO.output -> string -> int -> int -> unit
  val output_byte : unit Extlib.IO.output -> int -> unit
  val output_binary_int : unit Extlib.IO.output -> int -> unit
  val output_value : unit Extlib.IO.output -> '-> unit
  val close_out : unit Extlib.IO.output -> unit
  val close_out_noerr : unit Extlib.IO.output -> unit
  val open_in :
    ?mode:Extlib.File.open_in_flag list ->
    ?perm:Extlib.File.permission -> string -> Extlib.IO.input
  val open_in_bin : string -> Extlib.IO.input
  val open_in_gen : open_flag list -> int -> string -> Extlib.IO.input
  val input_char : Extlib.IO.input -> char
  val input_line : Extlib.IO.input -> string
  val input : Extlib.IO.input -> string -> int -> int -> int
  val really_input : Extlib.IO.input -> string -> int -> int -> unit
  val input_byte : Extlib.IO.input -> int
  val input_binary_int : Extlib.IO.input -> int
  val input_value : Extlib.IO.input -> 'a
  val close_in : Extlib.IO.input -> unit
  val close_in_noerr : Extlib.IO.input -> unit
  external ref : '-> 'a ref = "%makemutable"
  external ( ! ) : 'a ref -> 'a = "%field0"
  external ( := ) : 'a ref -> '-> unit = "%setfield0"
  external incr : int ref -> unit = "%incr"
  external decr : int ref -> unit = "%decr"
  type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6
  type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4
  val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string
  external format_of_string :
    ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ('a, 'b, 'c, 'd, 'e, 'f) format6
    = "%identity"
  val ( ^^ ) :
    ('a, 'b, 'c, 'd, 'e, 'f) format6 ->
    ('f, 'b, 'c, 'e, 'g, 'h) format6 -> ('a, 'b, 'c, 'd, 'g, 'h) format6
  external identity : '-> 'a = "%identity"
  val undefined : ?message:string -> '-> 'b
  val ( |> ) : '-> ('-> 'b) -> 'b
  val ( **> ) : ('-> 'b) -> '-> 'b
  val ( |- ) : ('-> 'b) -> ('-> 'c) -> '-> 'c
  val ( -| ) : ('-> 'b) -> ('-> 'a) -> '-> 'b
  val flip : ('-> '-> 'c) -> '-> '-> 'c
  val ( *** ) : ('-> 'b) -> ('-> 'd) -> 'a * '-> 'b * 'd
  val ( &&& ) : ('-> 'b) -> ('-> 'c) -> '-> 'b * 'c
  val first : ('-> 'b) -> 'a * '-> 'b * 'c
  val second : ('-> 'b) -> 'c * '-> 'c * 'b
  val curry : ('a * '-> 'c) -> '-> '-> 'c
  val uncurry : ('-> '-> 'c) -> 'a * '-> 'c
  val const : '-> '-> 'a
  val unique : unit -> int
  val finally : (unit -> unit) -> ('-> 'b) -> '-> 'b
  val args : unit -> string Extlib.Enum.t
  val invisible_args : int ref
  val exe : string
  val foreach : 'Extlib.Enum.t -> ('-> unit) -> unit
  val iter : ('-> unit) -> 'Extlib.Enum.t -> unit
  val map : ('-> 'b) -> 'Extlib.Enum.t -> 'Extlib.Enum.t
  val reduce : ('-> '-> 'a) -> 'Extlib.Enum.t -> 'a
  val fold : ('-> '-> 'a) -> '-> 'Extlib.Enum.t -> 'a
  val scanl : ('-> '-> 'a) -> '-> 'Extlib.Enum.t -> 'Extlib.Enum.t
  val ( /@ ) : 'Extlib.Enum.t -> ('-> 'b) -> 'Extlib.Enum.t
  val ( @/ ) : ('-> 'b) -> 'Extlib.Enum.t -> 'Extlib.Enum.t
  val exists : ('-> bool) -> 'Extlib.Enum.t -> bool
  val for_all : ('-> bool) -> 'Extlib.Enum.t -> bool
  val find : ('-> bool) -> 'Extlib.Enum.t -> 'a
  val peek : 'Extlib.Enum.t -> 'a option
  val get : 'Extlib.Enum.t -> 'a option
  val push : 'Extlib.Enum.t -> '-> unit
  val junk : 'Extlib.Enum.t -> unit
  val filter : ('-> bool) -> 'Extlib.Enum.t -> 'Extlib.Enum.t
  val ( // ) : 'Extlib.Enum.t -> ('-> bool) -> 'Extlib.Enum.t
  val concat : 'Extlib.Enum.t Extlib.Enum.t -> 'Extlib.Enum.t
  val ( -- ) : int -> int -> int Extlib.Enum.t
  val ( --. ) : float * float -> float -> float Extlib.Enum.t
  val ( --- ) : int -> int -> int Extlib.Enum.t
  val ( --~ ) : char -> char -> char Extlib.Enum.t
  val print :
    ?first:string ->
    ?last:string ->
    ?sep:string ->
    ('Extlib.InnerIO.output -> '-> unit) ->
    'Extlib.InnerIO.output -> 'Extlib.Enum.t -> unit
  type printer_flags =
    Extlib.ExtPervasives.Pervasives.printer_flags = {
    pf_width : int option;
    pf_padding_char : char;
    pf_justify : [ `left | `right ];
    pf_positive_prefix : char option;
  }
  val default_printer_flags : printer_flags
  val printer_a :
    ((unit Extlib.IO.output -> '-> unit) -> '-> 'b, 'b)
    Extlib.Print.directive
  val printer_t :
    ((unit Extlib.IO.output -> unit) -> 'a, 'a) Extlib.Print.directive
  val printer_B : (bool -> 'a, 'a) Extlib.Print.directive
  val printer_c : (char -> 'a, 'a) Extlib.Print.directive
  val printer_C : (char -> 'a, 'a) Extlib.Print.directive
  val printer_s :
    ?flags:printer_flags -> (string -> 'a, 'a) Extlib.Print.directive
  val printer_S :
    ?flags:printer_flags -> (string -> 'a, 'a) Extlib.Print.directive
  val printer_d :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_i :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_int :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_u :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_uint :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_x :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_X :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_hex :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_HEX :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_o :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_oct :
    ?flags:printer_flags -> (int -> 'a, 'a) Extlib.Print.directive
  val printer_ld :
    ?flags:printer_flags -> (int32 -> 'a, 'a) Extlib.Print.directive
  val printer_li :
    ?flags:printer_flags -> (int32 -> 'a, 'a) Extlib.Print.directive
  val printer_lu :
    ?flags:printer_flags -> (int32 -> 'a, 'a) Extlib.Print.directive
  val printer_lx :
    ?flags:printer_flags -> (int32 -> 'a, 'a) Extlib.Print.directive
  val printer_lX :
    ?flags:printer_flags -> (int32 -> 'a, 'a) Extlib.Print.directive
  val printer_lo :
    ?flags:printer_flags -> (int32 -> 'a, 'a) Extlib.Print.directive
  val printer_Ld :
    ?flags:printer_flags -> (int64 -> 'a, 'a) Extlib.Print.directive
  val printer_Li :
    ?flags:printer_flags -> (int64 -> 'a, 'a) Extlib.Print.directive
  val printer_Lu :
    ?flags:printer_flags -> (int64 -> 'a, 'a) Extlib.Print.directive
  val printer_Lx :
    ?flags:printer_flags -> (int64 -> 'a, 'a) Extlib.Print.directive
  val printer_LX :
    ?flags:printer_flags -> (int64 -> 'a, 'a) Extlib.Print.directive
  val printer_Lo :
    ?flags:printer_flags -> (int64 -> 'a, 'a) Extlib.Print.directive
  val printer_nd :
    ?flags:printer_flags -> (nativeint -> 'a, 'a) Extlib.Print.directive
  val printer_ni :
    ?flags:printer_flags -> (nativeint -> 'a, 'a) Extlib.Print.directive
  val printer_nu :
    ?flags:printer_flags -> (nativeint -> 'a, 'a) Extlib.Print.directive
  val printer_nx :
    ?flags:printer_flags -> (nativeint -> 'a, 'a) Extlib.Print.directive
  val printer_nX :
    ?flags:printer_flags -> (nativeint -> 'a, 'a) Extlib.Print.directive
  val printer_no :
    ?flags:printer_flags -> (nativeint -> 'a, 'a) Extlib.Print.directive
  val printer_f : (float -> 'a, 'a) Extlib.Print.directive
  val printer_F : (float -> 'a, 'a) Extlib.Print.directive
  val printer_format :
    (('a, 'b) Extlib.Print.format -> 'a, 'b) Extlib.Print.directive
  val printer_sc :
    ?flags:printer_flags ->
    ([> `Read ] Extlib.ExtString.String.Cap.t -> 'a, 'a)
    Extlib.Print.directive
  val printer_Sc :
    ?flags:printer_flags ->
    ([> `Read ] Extlib.ExtString.String.Cap.t -> 'a, 'a)
    Extlib.Print.directive
  val printer_rope : (Extlib.Rope.t -> 'a, 'a) Extlib.Print.directive
  val printer_utf8 : (Extlib.ExtUTF8.UTF8.t -> 'a, 'a) Extlib.Print.directive
  val printer_obj :
    (< print : unit Extlib.IO.output -> unit; .. > -> 'a, 'a)
    Extlib.Print.directive
  val bool_printer : bool Extlib.Value_printer.t
  val int_printer : int Extlib.Value_printer.t
  val int32_printer : int32 Extlib.Value_printer.t
  val int64_printer : int64 Extlib.Value_printer.t
  val nativeint_printer : nativeint Extlib.Value_printer.t
  val float_printer : float Extlib.Value_printer.t
  val string_printer : string Extlib.Value_printer.t
  val list_printer :
    'Extlib.Value_printer.t -> 'a list Extlib.Value_printer.t
  val array_printer :
    'Extlib.Value_printer.t -> 'a array Extlib.Value_printer.t
  val option_printer :
    'Extlib.Value_printer.t -> 'a option Extlib.Value_printer.t
  val maybe_printer :
    'Extlib.Value_printer.t -> 'a option Extlib.Value_printer.t
  val exn_printer : exn Extlib.Value_printer.t
  type ('a, 'b) result = ('a, 'b) Extlib.Std.result = Ok of '| Bad of 'b
  val sexp_of_result :
    ('-> Sexplib.Sexp.t) ->
    ('-> Sexplib.Sexp.t) -> ('a, 'b) result -> Sexplib.Sexp.t
  val result_of_sexp :
    (Sexplib.Sexp.t -> 'a) ->
    (Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> ('a, 'b) result
  val lock : Extlib.Concurrent.lock ref
end