]> matita.cs.unibo.it Git - helm.git/commitdiff
New demodulation tactics (mostly for debugging purposes).
authorAndrea Asperti <andrea.asperti@unibo.it>
Thu, 18 Mar 2010 11:23:53 +0000 (11:23 +0000)
committerAndrea Asperti <andrea.asperti@unibo.it>
Thu, 18 Mar 2010 11:23:53 +0000 (11:23 +0000)
It is called with "nauto demod".

helm/software/components/ng_tactics/nAuto.ml
helm/software/components/ng_tactics/nnAuto.ml
helm/software/components/ng_tactics/nnAuto.mli

index 53c87673bd165861c97ffb4e2564773ef4930725..65252eaf99e89cdda9d4bf362492dabf30fc7e84 100644 (file)
@@ -1709,6 +1709,8 @@ let auto_tac ~params =
 let auto_tac ~params:(_,flags as params) =
   if List.mem_assoc "paramodulation" flags then 
     auto_paramod_tac ~params 
+  else if List.mem_assoc "demod" flags then 
+    NnAuto.demod_tac ~params 
   else if List.mem_assoc "paramod" flags then 
     NnAuto.paramod_tac ~params 
   else if List.mem_assoc "fast_paramod" flags then 
index 460bf2d53161557a2be521002dfbe80c52d0e77a..f314d3eb389dbef693107a4f518750819064583c 100644 (file)
@@ -161,16 +161,18 @@ let height_of_goals status =
 ;;
 
 (* =============================== paramod =========================== *)
-let solve fast status eq_cache goal =
+let solve f status eq_cache goal =
+(*
   let f = 
     if fast then NCicParamod.fast_eq_check
     else NCicParamod.paramod in
+*)
   let n,h,metasenv,subst,o = status#obj in
   let gname, ctx, gty = List.assoc goal metasenv in
   let gty = NCicUntrusted.apply_subst subst ctx gty in
   let build_status (pt, _, metasenv, subst) =
     try
-      debug_print (lazy ("refining: "^(NCicPp.ppterm ctx subst metasenv pt)));
+      print (lazy ("refining: "^(NCicPp.ppterm ctx subst metasenv pt)));
       let stamp = Unix.gettimeofday () in 
       let metasenv, subst, pt, pty =
        (* NCicRefiner.typeof status
@@ -205,7 +207,7 @@ let solve fast status eq_cache goal =
 ;;
 
 let fast_eq_check eq_cache status goal =
-  match solve true status eq_cache goal with
+  match solve NCicParamod.fast_eq_check status eq_cache goal with
   | [] -> raise (Error (lazy "no proof found",None))
   | s::_ -> s
 ;;
@@ -254,7 +256,7 @@ let fast_eq_check_tac ~params s =
 ;;
 
 let paramod eq_cache status goal =
-  match solve false status eq_cache goal with
+  match solve NCicParamod.paramod status eq_cache goal with
   | [] -> raise (Error (lazy "no proof found",None))
   | s::_ -> s
 ;;
@@ -264,6 +266,17 @@ let paramod_tac ~params s =
   NTactics.distribute_tac (paramod unit_eq) s
 ;;
 
+let demod eq_cache status goal =
+  match solve NCicParamod.demod status eq_cache goal with
+  | [] -> raise (Error (lazy "no progress",None))
+  | s::_ -> s
+;;
+
+let demod_tac ~params s = 
+  let unit_eq = index_local_equations s#eq_cache s in   
+  NTactics.distribute_tac (demod unit_eq) s
+;;
+
 (*
 let fast_eq_check_tac_all  ~params eq_cache status = 
   let g,_,_ = current_goal status in
index 7d59d395d6e8cd2565725bf61a6c17f22dd33467..13a519d70903c5b4eef34c3b4bdca5d08efd1fb1 100644 (file)
@@ -20,6 +20,10 @@ val paramod_tac:
   params:(NTacStatus.tactic_term list * (string * string) list) -> 
    's NTacStatus.tactic
 
+val demod_tac:
+  params:(NTacStatus.tactic_term list * (string * string) list) -> 
+   's NTacStatus.tactic
+
 val smart_apply_tac: 
   NTacStatus.tactic_term -> 's NTacStatus.tactic