*)
let paramodulation_tactic = ref
- (fun dbd status -> raise (ProofEngineTypes.Fail "Not Ready yet..."));;
+ (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 ~(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
auto_new dbd width [] universe [id, (proof, [(goal, depth)], None)]
with
[] -> debug_print(lazy "Auto failed");
- raise (ProofEngineTypes.Fail "No Applicable theorem")
+ raise (ProofEngineTypes.Fail (lazy "No Applicable theorem"))
| (_,(proof,[],_))::_ ->
let t2 = Unix.gettimeofday () in
debug_print (lazy "AUTO_TAC HA FINITO");
(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