(fun term -> debug_print "term_is_equality E` DUMMY!!!!"; false);;
-let auto_tac ?(depth=default_depth) ?(width=default_width) ~(dbd:Mysql.dbd) () =
+let auto_tac ?(depth=default_depth) ?(width=default_width) ?paramodulation ~(dbd:Mysql.dbd) () =
let auto_tac dbd (proof, goal) =
- let paramodulation_ok =
- let _, metasenv, _, _ = proof in
- let _, _, meta_goal = CicUtil.lookup_meta goal metasenv in
- !term_is_equality meta_goal
- in
- if paramodulation_ok then (
- debug_print "USO PARAMODULATION...";
- try
- !paramodulation_tactic dbd (proof, goal)
- with e ->
- raise (ProofEngineTypes.Fail "paramodulation failure")
- ) else
+ let normal_auto () =
let universe = MetadataQuery.signature_of_goal ~dbd (proof, goal) in
Hashtbl.clear inspected_goals;
debug_print "Entro in Auto";
debug_print (Printf.sprintf "tempo: %.9f\n" (t2 -. t1));
(proof,[])
| _ -> assert false
+ 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
+ in
+ if paramodulation_ok then (
+ debug_print "USO PARAMODULATION...";
+(* try *)
+ !paramodulation_tactic dbd (proof, goal)
+(* with ProofEngineTypes.Fail _ -> *)
+(* normal_auto () *)
+ ) else
+ normal_auto ()
in
ProofEngineTypes.mk_tactic (auto_tac dbd)
;;