sig
  val const : 'a -> 'b -> 'a
  val const2 : 'a -> 'b -> 'c -> 'a
  val const3 : 'a -> 'b -> 'c -> 'd -> 'a
  val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
  val foldi : ('a -> int -> 'a) -> 'a -> int -> int -> 'a
  val mapi : (int -> 'a) -> int -> int -> 'a list
  val iterf : (float -> unit) -> float -> float -> float -> unit
  exception FoldSkip
  val all_fn : ('a -> bool) -> 'z -> 'a -> bool
  val any_fn : ('a -> bool) -> 'z -> 'a -> bool
  val all2_fn : ('a -> 'b -> bool) -> 'z -> 'a -> 'b -> bool
  val any2_fn : ('a -> 'b -> bool) -> 'z -> 'a -> 'b -> bool
  type ('z, 'a, 'c) fold = ('z -> 'a -> 'z) -> 'z -> 'c -> 'z
  val all : (bool, 'a, 'c) Util.fold -> ('a -> bool) -> 'c -> bool
  val any : (bool, 'a, 'c) Util.fold -> ('a -> bool) -> 'c -> bool
  type ('z, 'a, 'b, 'c, 'd) fold2 =
      ('z -> 'a -> 'b -> 'z) -> 'z -> 'c -> 'd -> 'z
  val all2 :
    (bool, 'a, 'b, 'c, 'd) Util.fold2 ->
    ('a -> 'b -> bool) -> 'c -> 'd -> bool
  val any2 :
    (bool, 'a, 'b, 'c, 'd) Util.fold2 ->
    ('a -> 'b -> bool) -> 'c -> 'd -> bool
  type ('z, 'a, 'b, 'c) foldd =
      ('z -> 'a -> 'z) -> ('z -> 'b -> 'z) -> 'z -> 'c -> 'z
  val alld :
    (bool, 'a, 'b, 'c) Util.foldd ->
    ('a -> bool) -> ('b -> bool) -> 'c -> bool
  val anyd :
    (bool, 'a, 'b, 'c) Util.foldd ->
    ('a -> bool) -> ('b -> bool) -> 'c -> bool
  val ffalse : 'a -> bool
  val ttrue : 'a -> bool
  val iter_first : (('a -> unit) -> 'b) -> ('a -> 'c option) -> 'c
  type 'a cmptr
  type 'a compare = 'a -> 'a -> int
  val cmptr : ('a -> 'b) -> 'b Util.compare -> 'a Util.cmptr
  val cmptr_direct : 'a Util.compare -> 'a Util.cmptr
  val cmp : 'a Util.cmptr list -> 'a Util.compare
  val cmp_lists : 'a Util.cmptr list -> 'a list Util.compare
  val terminal_has_color : bool
  val ansi_color_tags : Stdlib.Format.formatter_stag_functions
  val get_home_dir : unit -> string
  val split_version : string -> (string * int) list
end