val ( ++ ) : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b val findi : ('a -> bool) -> 'a list -> (int * 'a) val option_map : ('a -> 'b) -> 'a option -> 'b option val option_get : ('a option) -> 'a val find_opt : ('a -> 'b option) -> 'a list -> 'b option val index_of : ?eq:('a -> 'a -> bool) -> 'a -> 'a list -> int val index_of_opt : ?eq:('a -> 'a -> bool) -> 'a list -> 'a -> int option val filter_map : ('a -> 'b option) -> 'a list -> 'b list val first_duplicate : 'a list -> 'a option val split_duplicates : 'a list -> 'a list * 'a list val uniq : ?compare:('a -> 'a -> int) -> 'a list -> 'a list val sort_uniq : ?compare:('a -> 'a -> int) -> 'a list -> 'a list val list_cut : (int * 'a list) -> ('a list * 'a list) val concat_map : ('a -> 'b list) -> 'a list -> 'b list val take : int -> 'a list -> 'a list module Vars : sig val string_of_var : int -> string val var_of_string : string -> int val print_name : string list -> int -> string end