]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/tactics/autoTactic.ml
bugfix: demodulate_tac is in module Saturation
[helm.git] / helm / ocaml / tactics / autoTactic.ml
index b232d9894c444fb1ea2b431ff3811908e033930f..42df90768263b2749c30f9ff81c1c0dcf4f9b12c 100644 (file)
@@ -23,6 +23,8 @@
  * http://cs.unibo.it/helm/.
  *)
 
+(* $Id$ *)
+
  let debug = false
  let debug_print s = if debug then prerr_endline (Lazy.force s)
 
@@ -120,13 +122,6 @@ let new_search_theorems f dbd proof goal depth sign =
 
 exception NoOtherChoices;;
 
-let is_in_metasenv goal metasenv =
-  try
-    let (_, ey ,ty) =
-      CicUtil.lookup_meta goal metasenv in
-      true
-  with CicUtil.Meta_not_found _ -> false 
-
 let rec auto_single dbd proof goal ey ty depth width sign already_seen_goals
  universe
   =
@@ -137,7 +132,7 @@ let rec auto_single dbd proof goal ey ty depth width sign already_seen_goals
   let _,metasenv,p,_ = proof in
     (* first of all we check if the goal has been already
        inspected *)
-  assert (is_in_metasenv goal metasenv);
+  assert (CicUtil.exists_meta goal metasenv);
   let exitus =
     try Hashtbl.find inspected_goals ty
     with Not_found -> NotYetInspected in
@@ -234,13 +229,9 @@ and auto_new dbd width already_seen_goals universe = function
   | [] -> []
   | (subst,(proof, goals, sign))::tl ->
       let _,metasenv,_,_ = proof in
-      let is_in_metasenv (goal, _) =
-        try
-          let (_, ey ,ty) = CicUtil.lookup_meta goal metasenv in
-          true
-        with CicUtil.Meta_not_found _ -> false 
+      let goals'=
+        List.filter (fun (goal, _) -> CicUtil.exists_meta goal metasenv) goals
       in
-      let goals'= List.filter is_in_metasenv goals in
        auto_new_aux dbd 
         width already_seen_goals universe ((subst,(proof, goals', sign))::tl)
 
@@ -304,13 +295,14 @@ let auto_tac ?(depth=default_depth) ?(width=default_width) ~(dbd:HMysql.dbd)
 ;;
 *)
 
+(*
 let paramodulation_tactic = ref
   (fun dbd ?full ?depth ?width status ->
      raise (ProofEngineTypes.Fail (lazy "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
     ?full ~(dbd:HMysql.dbd) () =
@@ -342,12 +334,12 @@ let auto_tac ?(depth=default_depth) ?(width=default_width) ?paramodulation
       | Some _ ->
           let _, metasenv, _, _ = proof in
           let _, _, meta_goal = CicUtil.lookup_meta goal metasenv in
-          full || (!term_is_equality meta_goal)
+          full || (Inference.term_is_equality meta_goal)
     in
     if paramodulation_ok then (
       debug_print (lazy "USO PARAMODULATION...");
 (*       try *)
-      !paramodulation_tactic dbd ~depth ~width ~full (proof, goal)
+      Saturation.saturate dbd ~depth ~width ~full (proof, goal)
 (*       with ProofEngineTypes.Fail _ -> *)
 (*         normal_auto () *)
     ) else