* http://cs.unibo.it/helm/.
*)
+let _profiler = <:profiler<_profiler>>;;
+
(* $Id$ *)
open Utils;;
(lazy
(Printf.sprintf "NOT SIMPLE TERMS: %s %s"
(CicPp.ppterm t1) (CicPp.ppterm t2)));
- raise (CicUnification .UnificationFailure (lazy "Inference.unification.unif"))
+ raise (CicUnification.UnificationFailure (lazy "Inference.unification.unif"))
) else
if b then
(* full unification *)
exception MatchingFailure;;
-let matching1 metasenv1 metasenv2 context t1 t2 ugraph =
+(** matching takes in input the _disjoint_ metasenv of t1 and t2;
+it perform unification in the union metasenv, then check that
+the first metasenv has not changed *)
+let matching metasenv1 metasenv2 context t1 t2 ugraph =
try
unification_aux false metasenv1 metasenv2 context t1 t2 ugraph
with
- CicUnification .UnificationFailure _ ->
+ CicUnification.UnificationFailure _ ->
raise MatchingFailure
;;
-let unification = unification_aux true
+let unification m1 m2 c t1 t2 ug =
+ try
+ unification_aux true m1 m2 c t1 t2 ug
+ with exn ->
+ raise exn
;;
-(** matching takes in input the _disjoint_ metasenv of t1 and t2;
-it perform unification in the union metasenv, then check that
-the first metasenv has not changed *)
-
-let matching = matching1;;
let check_eq context msg eq =
let w, proof, (eq_ty, left, right, order), metas = eq in
res
;;
+let get_stats () = <:show<Inference.>> ;;