]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/tactics/autoTactic.ml
new signature of auto_tac, with a new optional argument "full", to invoke the
[helm.git] / helm / ocaml / tactics / autoTactic.ml
index a0835a9b89db982e12e2a483cda54c72afa29068..9b716637a9ed8c0c1c4ba2736034595365b461b3 100644 (file)
@@ -305,13 +305,15 @@ let auto_tac ?(depth=default_depth) ?(width=default_width) ~(dbd:HMysql.dbd)
 *)
 
 let paramodulation_tactic = ref
-  (fun dbd status -> raise (ProofEngineTypes.Fail "Not Ready yet..."));;
+  (fun dbd ?full ?depth ?width status ->
+     raise (ProofEngineTypes.Fail "Not Ready yet..."));;
 
 let term_is_equality = ref
   (fun term -> debug_print (lazy "term_is_equality E` DUMMY!!!!"); false);;
 
 
-let auto_tac ?(depth=default_depth) ?(width=default_width) ?paramodulation ~(dbd:HMysql.dbd) () =
+let auto_tac ?(depth=default_depth) ?(width=default_width) ?paramodulation
+    ?full ~(dbd:HMysql.dbd) () =
   let auto_tac dbd (proof, goal) =
     let normal_auto () = 
       let universe = MetadataQuery.signature_of_goal ~dbd (proof, goal) in
@@ -333,18 +335,19 @@ let auto_tac ?(depth=default_depth) ?(width=default_width) ?paramodulation ~(dbd
          (proof,[])
       | _ -> assert false
     in
+    let full = match full with None -> false | Some _ -> true in
     let paramodulation_ok =
       match paramodulation with
       | None -> false
       | Some _ ->
           let _, metasenv, _, _ = proof in
           let _, _, meta_goal = CicUtil.lookup_meta goal metasenv in
-          !term_is_equality meta_goal
+          full || (!term_is_equality meta_goal)
     in
     if paramodulation_ok then (
       debug_print (lazy "USO PARAMODULATION...");
 (*       try *)
-        !paramodulation_tactic dbd (proof, goal)
+      !paramodulation_tactic dbd ~depth ~width ~full (proof, goal)
 (*       with ProofEngineTypes.Fail _ -> *)
 (*         normal_auto () *)
     ) else