let test_unif (unifier : bool -> Types_unify.term -> Types_unify.term -> Types_unify.t_subst list -> Types_unify.t_subst list)
(tab : (int * string) list) (str : string) (u : Types_unify.term) (v : Types_unify.term) (sub : Types_unify.t_subst) : Types_unify.t_subst list =
let () = print_string ("\n\n\n===== "^str^
" ==========================================\n"); flush stdout
in
let t_start = Sys.time () in
let subs = unifier true u v [sub] in
let t_stop = Sys.time () in
let t_diff = t_stop -. t_start in
let size = string_of_int (List.length subs) in
let () = print_string ("number of unifiers: "^size^"\n") in
let () = print_string ("time needed: "^(if t_diff=0. then "<0.01"
else string_of_float t_diff)^"s\n") in
let () = print_string (
"std unif alg: "^(if !light_unif then "unif_light" else "unif_cmp")^
"\n\n==== given problem ===="^
"\nu = "^(str_term_dbg tab u)^
"\nv = "^(str_term_dbg tab v)^
"\n---- sub ----\n"^(str_sub_dbg tab sub)^
"\n===== solution(s) =========================================\n"^
(str_subs_dbg tab subs size)^
"\n===== solution(s) clot ====================================\n"^
(str_subs_clot_dbg tab subs size u v)^"\n")
in
let () = print_string (
"===== /"^str^
" =========================================\n\n")
in
flush stdout; subs