sig
  val nop : 'a -> unit
  external id : 'a -> 'a = "%identity"
  val adapt_filename : string -> string
  val max_cpt : int -> int -> int
  val number_to_color : int -> int
  exception Unregistered_function of string
  val mk_labeled_fun : string -> 'a
  val mk_fun : string -> ('a -> 'b) Pervasives.ref
  val ( $ ) : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
  val swap : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
  val uncurry : ('a -> 'b -> 'c) -> 'a * 'b -> 'c
  val iter_uncurry2 :
    (('a -> 'b -> unit) -> 'c -> unit) -> ('a * 'b -> unit) -> 'c -> unit
  val as_singleton : 'a list -> 'a
  val last : 'a list -> 'a
  val filter_out : ('a -> bool) -> 'a list -> 'a list
  val replace : ('a -> 'a -> bool) -> 'a -> 'a list -> 'a list
  val filter_map : ('a -> bool) -> ('a -> 'b) -> 'a list -> 'b list
  val filter_map' : ('a -> 'b) -> ('b -> bool) -> 'a list -> 'b list
  val product_fold : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
  val product : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
  val find_index : ('a -> bool) -> 'a list -> int
  val list_compare : ('a -> 'a -> int) -> 'a list -> 'a list -> int
  val list_of_opt : 'a option -> 'a list
  val opt_of_list : 'a list -> 'a option
  val find_opt : ('a -> 'b option) -> 'a list -> 'b
  val iteri : (int -> 'a -> unit) -> 'a list -> unit
  val mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
  val sort_unique : ('a -> 'a -> int) -> 'a list -> 'a list
  val subsets : int -> 'a list -> 'a list list
  val array_exists : ('a -> bool) -> 'a array -> bool
  val array_existsi : (int -> 'a -> bool) -> 'a array -> bool
  val has_some : 'a option -> bool
  val may : ('a -> unit) -> 'a option -> unit
  val opt_conv : 'a -> 'a option -> 'a
  val may_map : ('a -> 'b) -> ?dft:'b -> 'a option -> 'b
  val opt_map : ('a -> 'b) -> 'a option -> 'b option
  val opt_fold : ('a -> 'b -> 'b) -> 'a option -> 'b -> 'b
  val merge_opt :
    ('a -> 'b -> 'b -> 'b) -> 'a -> 'b option -> 'b option -> 'b option
  val opt_bind : ('a -> 'b option) -> 'a option -> 'b option
  val opt_filter : ('a -> bool) -> 'a option -> 'a option
  val the : ?exn:exn -> 'a option -> 'a
  val find_or_none : ('a -> 'b) -> 'a -> 'b option
  val opt_equal : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool
  val opt_compare : ('a -> 'a -> int) -> 'a option -> 'a option -> int
  val opt_hash : ('a -> int) -> 'a option -> int
  val xor : bool -> bool -> bool
  val string_prefix : ?strict:bool -> string -> string -> bool
  val string_del_prefix : ?strict:bool -> string -> string -> string option
  val string_suffix : ?strict:bool -> string -> string -> bool
  val string_del_suffix : ?strict:bool -> string -> string -> string option
  val string_split : string -> int -> string * string
  val make_unique_name :
    (string -> bool) -> ?sep:string -> ?start:int -> string -> int * string
  external getperfcount : unit -> int = "getperfcount" "noalloc"
  external getperfcount1024 : unit -> int = "getperfcount1024" "noalloc"
  val time : ?msg:string -> ('a -> 'b) -> 'a -> 'b
  val time1024 : ?msg:string -> ('a -> 'b) -> 'a -> 'b
  external address_of_value : 'a -> int = "address_of_value" "noalloc"
  val try_finally : finally:(unit -> unit) -> ('a -> 'b) -> 'a -> 'b
  val safe_at_exit : (unit -> unit) -> unit
  val cleanup_at_exit : string -> unit
  exception Temp_file_error of string
  val temp_file_cleanup_at_exit : ?debug:bool -> string -> string -> string
  val temp_dir_cleanup_at_exit : ?debug:bool -> string -> string
  val safe_remove : string -> unit
  val safe_remove_dir : string -> unit
  val terminate_process : int -> unit
  val usleep : int -> unit
  external compare_basic : 'a -> 'a -> int = "%compare"
end