]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/cic_unification/cicMetaSubst.ml
Dama is now in the night benchmarks.
[helm.git] / helm / software / components / cic_unification / cicMetaSubst.ml
index 53efcf96edfad1adeb23704626206dbcaaa9feab..1dcbed6d297e4db01a5039e9eda32879c97d4ecd 100644 (file)
@@ -253,6 +253,11 @@ let apply_subst =
     apply_subst_gen ~appl_fun s t
 ;;
 
+let profiler = HExtlib.profile "U/CicMetaSubst.apply_subst"
+let apply_subst s t = 
+  profiler.HExtlib.profile (apply_subst s) t
+
+
 let rec apply_subst_context subst context =
 (*
   incr apply_subst_context_counter;
@@ -620,15 +625,17 @@ let delift n subst context metasenv l t =
     function
        C.Rel m -> 
          if m <=k then
-          C.Rel m   (*CSC: che succede se c'e' un Def? Dovrebbe averlo gia' *)
-                    (*CSC: deliftato la regola per il LetIn                 *)
-                    (*CSC: FALSO! La regola per il LetIn non lo fa          *)
+          C.Rel m
          else
           (try
             match List.nth context (m-k-1) with
                Some (_,C.Def (t,_)) ->
                 (*CSC: Hmmm. This bit of reduction is not in the spirit of    *)
                 (*CSC: first order unification. Does it help or does it harm? *)
+                (*CSC: ANSWER: it hurts performances since it is possible to  *)
+                (*CSC: have an exponential explosion of the size of the proof.*)
+                (*CSC: However, without this bit of reduction some "apply" in *)
+                (*CSC: the library fail (e.g. nat/nth_prime.ma).              *)
                 deliftaux k (S.lift m t)
              | Some (_,C.Decl t) ->
                 C.Rel ((position (m-k) l) + k)