module Unify: sig
.. end
val intersection : 'a list -> 'a list -> 'a list
val remove_from_subs : 'a -> ('a * 'b) list * 'c * 'd -> ('a * 'b) list * 'c * 'd
val split_subst : Types_unify.t_subst ->
Types_unify.term ->
Types_unify.term ->
Types_unify.term * Types_unify.term * Types_unify.t_split_subst * int list *
int list
val purify_pair : bool ->
Types_unify.t_subst ->
Types_unify.term * Types_unify.term ->
Types_unify.term * Types_unify.term * Types_unify.t_subst
val rep : Types_unify.t_partition -> int -> int
val reps : Types_unify.t_partition -> int list
val trivial_part : int list -> Types_unify.t_partition
val remove_from_list : 'a -> 'a list -> bool * 'a list
val pre_choice_std : int list -> Types_unify.t_equal -> int list * int list * (int * int) list
val get_onlyvar : int list -> Types_unify.term list -> int option
val lookup_bidir_remove : 'a -> ('a * 'a) list -> 'a * ('a * 'a) list
val pre_choice_xor : int list * int list * (int * int) list ->
Types_unify.term list list -> int list * int list * (int * int) list
val pre_choice_of_thy : Types_unify.term list list ->
Types_unify.t_equal -> int list -> int list * int list * (int * int) list
val choose_theory : 'a list -> 'a list -> ('a * 'a) list -> ('a list * 'a list) list
val apply_choice_std : Types_unify.t_partition ->
int list -> Types_unify.t_equal -> Types_unify.t_equal
val get_po : Types_unify.t_partition -> Types_unify.t_equal -> Types_unify.t_po
val remove_identif : Types_unify.t_partition ->
(int * Types_unify.term) list ->
(int * Types_unify.term) list -> (int * Types_unify.term) list
val combine_subs : Types_unify.t_equal ->
Types_unify.t_equal ->
Types_unify.t_equal ->
Types_unify.t_freevar -> Types_unify.t_unequal -> Types_unify.t_subst
val is_allowed : Types_unify.t_partition -> int -> int -> Types_unify.t_vi_ctrs -> bool
val is_subset : 'a list -> 'a list -> bool
val is_more_general_eq : Types_unify.t_partition -> Types_unify.t_partition -> bool
val exists_more_general_eq : Types_unify.t_partition -> Types_unify.t_partition list -> bool
val is_allowed_vi : Types_unify.t_partition -> Types_unify.t_vi_ctrs -> bool
val is_allowed_sub : Types_unify.t_vi_ctrs -> Types_unify.t_equal -> bool
val pre_identification : Types_unify.t_vi_ctrs ->
Types_unify.t_equal -> Types_unify.t_partition -> Types_unify.t_partition
val add_identification_ctr_xor : Types_unify.term list list ->
Types_unify.t_partition -> Types_unify.term list list
val combine_classes : Types_unify.t_partition -> int -> int -> int list list
val identify_variables : (bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list) ->
(Types_unify.t_subst list * Types_unify.t_partition * (int * int) list) list ->
Types_unify.t_subst list ->
Types_unify.t_partition ->
Types_unify.t_vi_ctrs ->
(Types_unify.t_subst list * Types_unify.t_partition * (int * int) list) list
val solve_xor_eqns : ('a -> Types_unify.t_po -> 'b -> Types_unify.t_equal) ->
Types_unify.t_equal * 'a * Types_unify.t_equal * Types_unify.t_freevar *
Types_unify.t_unequal ->
Types_unify.t_partition ->
Types_unify.t_vi_ctrs -> 'b * int list -> Types_unify.t_subst
val solve_xor_eqns_choices : ('a -> Types_unify.t_po -> int list -> Types_unify.t_equal) ->
bool ->
Types_unify.t_equal * 'a * Types_unify.t_equal * Types_unify.t_freevar *
Types_unify.t_unequal ->
Types_unify.t_partition ->
Types_unify.t_vi_ctrs -> (int list * int list) list -> Types_unify.t_subst
val process_layer_elem : 'a ->
(Types_unify.term list list ->
Types_unify.t_po -> int list -> Types_unify.t_equal) ->
Types_unify.t_partition ->
Types_unify.t_vi_ctrs ->
Types_unify.term list list ->
Types_unify.t_equal ->
Types_unify.t_unequal ->
Types_unify.t_subst list ->
Types_unify.t_subst list ->
(Types_unify.t_equal * Types_unify.t_freevar * Types_unify.t_unequal) list ->
Types_unify.t_subst list * Types_unify.t_subst list
val process_layer : (bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list) ->
(Types_unify.term list list ->
Types_unify.t_po -> int list -> Types_unify.t_equal) ->
Types_unify.term list list ->
Types_unify.t_equal ->
Types_unify.t_unequal ->
(Types_unify.t_subst list * Types_unify.t_partition * (int * int) list) list ->
Types_unify.t_partition list ->
Types_unify.t_partition list ->
Types_unify.t_subst list ->
(Types_unify.t_subst list * Types_unify.t_partition * (int * int) list) list ->
Types_unify.t_subst list
val unif_combi : (bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list) ->
(Types_unify.term list list ->
Types_unify.t_po -> int list -> Types_unify.t_equal) ->
bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list
val merge_expinv : ('a * Types_unify.sign) list ->
('a * Types_unify.sign) list -> ('a * Types_unify.sign) list
val exp_equal : (bool -> 'a -> 'a -> 'b list -> 'b list) ->
('a * Types_unify.sign) list ->
('a * Types_unify.sign) list -> 'b list -> 'b list
val unif_exp : (bool -> Types_unify.term -> Types_unify.term -> 'a list -> 'a list) ->
Types_unify.term ->
(Types_unify.term * Types_unify.sign) list ->
Types_unify.term ->
(Types_unify.term * Types_unify.sign) list -> 'a list -> 'a list
val unif_uplet_light : Types_unify.t_subst list ->
Types_unify.term list * Types_unify.term list -> Types_unify.t_subst list
val unif_light : bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list
exception NeedXor
val unif_uplet_norm : Types_unify.t_subst -> Types_unify.term list -> Types_unify.term list
val unif_uplet_cmp_f : Types_unify.term list ->
Types_unify.term list -> Types_unify.t_subst list -> Types_unify.t_subst list
val unif_uplet_cmp_g : Types_unify.t_subst list ->
Types_unify.term ->
Types_unify.term list ->
Types_unify.term list -> Types_unify.term list -> Types_unify.t_subst list
val unif_uplet_cmp_h : Types_unify.t_subst list ->
Types_unify.term list ->
Types_unify.term list -> Types_unify.t_subst list -> Types_unify.t_subst list
val unif_cmp : bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list
val unif : bool ->
Types_unify.term ->
Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list
val usual_unification : int -> Types_unify.term -> Types_unify.term -> Types_unify.t_subst list