sig
  module Lists :
    sig
      val init : int -> (int -> 'a) -> 'a list
      val return : ('-> 'b option) -> 'a list -> 'b
      val return_opt : ('-> 'b option) -> 'a list -> 'b option
      val map_opt : ('-> 'b option) -> 'a list -> 'b list
      val assoc_err : '-> ('a * 'b) list -> err:string -> 'b
      val assoc_def : '-> ('a * 'b) list -> def:'-> 'b
      val assoc_replace : '-> '-> ('a * 'b) list -> ('a * 'b) list
      val take : int -> 'a list -> 'a list
      val drop : int -> 'a list -> 'a list
      val uniq : 'a list -> 'a list
      val index : '-> 'a list -> int list
      val starts_with : 'a list -> 'a list -> bool
    end
  module Chars :
    sig
      val is_alpha : char -> bool
      val is_num : char -> bool
      val is_alpha_num : char -> bool
      val is_hex_num : char -> bool
    end
  module Strings :
    sig
      val init : int -> (int -> char) -> string
      val fold_left : ('-> char -> 'a) -> '-> string -> 'a
      val nth : string -> int -> char option
      val nth_is : string -> int -> char -> bool
      val set : string -> int -> char -> string
      val copy : string -> string
      val create : int -> string
      val fill : string -> int -> int -> char -> string
      val char_rindex_from : string -> int -> char -> int option
      val char_index_from : string -> int -> char -> int option
      val char_index_all : string -> char -> int list
      val char_split : char -> string -> string list
      val char_splitter : char -> string -> string list
      val char_cut : char -> string -> (string * string) option
      val char_rcut : char -> string -> (string * string) option
      val starts_with : string -> string -> bool
      val ends_with : string -> string -> bool
      val str_split : string -> string -> string list
      val str_cut : string -> string -> (string * string) option
      val string_index : string -> string -> int option
      val string_rindex : string -> string -> int option
      val string_index_from : string -> int -> string -> int option
      val string_rindex_from : string -> int -> string -> int option
      val uppercase : string -> string
      val lowercase : string -> string
      val capitalize : string -> string
      val uncapitalize : string -> string
    end
  module ImStrings :
    sig
      type t
      val to_string : UtilsLib.ImStrings.t -> string
      val of_string : string -> UtilsLib.ImStrings.t
      val init : int -> (int -> char) -> UtilsLib.ImStrings.t
      val fold_left : ('-> char -> 'a) -> '-> UtilsLib.ImStrings.t -> 'a
      val nth : UtilsLib.ImStrings.t -> int -> char option
      val nth_is : UtilsLib.ImStrings.t -> int -> char -> bool
      val set : string -> int -> char -> string
      val char_rindex_from :
        UtilsLib.ImStrings.t -> int -> char -> int option
      val char_index_from : UtilsLib.ImStrings.t -> int -> char -> int option
      val char_index_all : UtilsLib.ImStrings.t -> char -> int list
      val char_split :
        char -> UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t list
      val char_splitter :
        char -> UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t list
      val char_cut :
        char ->
        UtilsLib.ImStrings.t ->
        (UtilsLib.ImStrings.t * UtilsLib.ImStrings.t) option
      val char_rcut :
        char ->
        UtilsLib.ImStrings.t ->
        (UtilsLib.ImStrings.t * UtilsLib.ImStrings.t) option
      val starts_with : UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t -> bool
      val ends_with : UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t -> bool
      val str_split :
        UtilsLib.ImStrings.t ->
        UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t list
      val str_cut :
        UtilsLib.ImStrings.t ->
        UtilsLib.ImStrings.t ->
        (UtilsLib.ImStrings.t * UtilsLib.ImStrings.t) option
      val string_index :
        UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t -> int option
      val string_rindex :
        UtilsLib.ImStrings.t -> UtilsLib.ImStrings.t -> int option
      val string_index_from :
        UtilsLib.ImStrings.t -> int -> UtilsLib.ImStrings.t -> int option
      val string_rindex_from :
        UtilsLib.ImStrings.t -> int -> UtilsLib.ImStrings.t -> int option
    end
  module Arrays :
    sig val map2 : ('-> '-> 'c) -> 'a array -> 'b array -> 'c array end
  module ImArrays :
    sig
      type 'a t
      val map2 :
        ('-> '-> 'c) ->
        'UtilsLib.ImArrays.t ->
        'UtilsLib.ImArrays.t -> 'UtilsLib.ImArrays.t
    end
  module Inputs :
    sig
      type t = Stdlib.in_channel
      val read_file : string -> string
      val read_file_bin : string -> string
      val input_channel : UtilsLib.Inputs.t -> string
      val input_lines : UtilsLib.Inputs.t -> string list
      val lines : UtilsLib.Inputs.t -> string list
      val lines_of_file : string -> string list
      val input_line_opt : UtilsLib.Inputs.t -> string option
      val line : UtilsLib.Inputs.t -> string option
    end
  module Outputs :
    sig
      type t = Stdlib.out_channel
      val write_file : string -> string -> unit
      val write_file_bin : string -> string -> unit
      module Infix :
        sig val ( << ) : Stdlib.out_channel -> string -> unit end
    end
  module Loops :
    sig
      val fold_left : ('-> int -> 'a) -> '-> int -> 'a
      val iter : (unit -> unit) -> int -> unit
      val iteri : (int -> unit) -> int -> unit
    end
  module Randoms :
    sig
      val init_back : unit -> string
      val back_init : string -> unit
      val prob_take : ('-> float) -> 'a list -> 'a
      val prob_extract : ('-> float) -> 'a list -> 'a * 'a list
      module Int : sig val range : int -> int -> int end
      module Float : sig val range : float -> float -> float end
      module Int32 : sig val range : int32 -> int32 -> int32 end
      module Int64 : sig val range : int64 -> int64 -> int64 end
      module List : sig val take : 'a list -> 'end
      module Array : sig val take : 'a array -> 'end
    end
  module RandStates :
    sig
      val make_init_back : unit -> Stdlib.Random.State.t * string
      val make_back_init : string -> Stdlib.Random.State.t
    end
  module Ints :
    sig
      type t = int
      val compare : UtilsLib.Ints.t -> UtilsLib.Ints.t -> int
      val rand : UtilsLib.Ints.t -> UtilsLib.Ints.t
    end
  module Floats :
    sig
      type t = float
      val compare : UtilsLib.Floats.t -> UtilsLib.Floats.t -> int
      val rand : UtilsLib.Floats.t -> UtilsLib.Floats.t
      val cmp_float : ?epsilon_float:float -> unit -> float -> float -> bool
      module Infix :
        sig
          val ( + ) : float -> float -> float
          val ( - ) : float -> float -> float
          val ( * ) : float -> float -> float
          val ( / ) : float -> float -> float
          val ( % ) : float -> float -> float
          val ( ** ) : float -> float -> float
          val ( < ) : float -> float -> bool
          val ( > ) : float -> float -> bool
          val ( = ) : float -> float -> bool
          val ( <= ) : float -> float -> bool
          val ( >= ) : float -> float -> bool
        end
      module InfixDot :
        sig
          val ( +. ) : float -> float -> float
          val ( -. ) : float -> float -> float
          val ( *. ) : float -> float -> float
          val ( /. ) : float -> float -> float
          val ( %. ) : float -> float -> float
          val ( **. ) : float -> float -> float
          val ( <. ) : float -> float -> bool
          val ( >. ) : float -> float -> bool
          val ( =. ) : float -> float -> bool
          val ( <=. ) : float -> float -> bool
          val ( >=. ) : float -> float -> bool
        end
    end
  module Ints32 :
    sig
      type t = int32
      val range : UtilsLib.Ints32.t -> UtilsLib.Ints32.t -> UtilsLib.Ints32.t
      module Infix : sig end
    end
  module Ints64 :
    sig
      type t = int64
      val range : UtilsLib.Ints64.t -> UtilsLib.Ints64.t -> UtilsLib.Ints64.t
      module Infix : sig end
    end
  module LSys : sig val args : unit -> string list end
  module Args :
    sig
      type kind =
          Int
        | Float
        | String
        | Set_true
        | Set_false
        | Custom of string
        | StringAcc
      type d =
          Default of string
        | Defaults of string list
        | Required
        | Optional
      type spec = string * UtilsLib.Args.d * UtilsLib.Args.kind * string
      type cmd
      type args = string list
      val parse :
        UtilsLib.Args.spec list -> UtilsLib.Args.args -> UtilsLib.Args.cmd
      val usage : UtilsLib.Args.spec list -> unit
      val get_int : UtilsLib.Args.cmd -> string -> int
      val get_float : UtilsLib.Args.cmd -> string -> float
      val get_bool : UtilsLib.Args.cmd -> string -> bool
      val get_string : UtilsLib.Args.cmd -> string -> string
      val get_custom : (string -> 'a) -> UtilsLib.Args.cmd -> string -> 'a
      val get_string_list : UtilsLib.Args.cmd -> string -> string list
      val get_int_opt : UtilsLib.Args.cmd -> string -> int option
      val get_float_opt : UtilsLib.Args.cmd -> string -> float option
      val get_bool_opt : UtilsLib.Args.cmd -> string -> bool option
      val get_string_opt : UtilsLib.Args.cmd -> string -> string option
      val get_custom_opt :
        (string -> 'a) -> UtilsLib.Args.cmd -> string -> 'a option
    end
  module Options : sig val default : '-> 'a option -> 'end
  module Labels :
    sig
      module Loops :
        sig
          val fold_left : f:('-> int -> 'a) -> init:'-> int -> 'a
          val iter : f:(unit -> 'a) -> int -> unit
          val iteri : f:(int -> 'a) -> int -> unit
        end
    end
  module Filenames : sig val get_extension : string -> string end
end