Added several new functions that are used to prove HOL goals. Added new methods "vampireH" and "eproverH" that can prove both FOL and HOL goals. The old "vampire" and "eprover" methods are renamed to "vampireF" and "eproverF"; they can only prove FOL goals.
authormengj
Fri Oct 28 02:28:20 2005 +0200 (2005-10-28 ago)
changeset 1800235ec4681d38f
parent 18001 6ca14bec7cd5
child 18003 2aecb2d68c00
Added several new functions that are used to prove HOL goals. Added new methods "vampireH" and "eproverH" that can prove both FOL and HOL goals. The old "vampire" and "eprover" methods are renamed to "vampireF" and "eproverF"; they can only prove FOL goals.
src/HOL/Tools/res_atp_methods.ML
     1.1 --- a/src/HOL/Tools/res_atp_methods.ML	Fri Oct 28 02:27:19 2005 +0200
     1.2 +++ b/src/HOL/Tools/res_atp_methods.ML	Fri Oct 28 02:28:20 2005 +0200
     1.3 @@ -25,24 +25,28 @@
     1.4  
     1.5  
     1.6  (* convert the negated 1st subgoal into CNF, write to files and call an ATP oracle *)
     1.7 -fun res_atp_tac res_atp_oracle timeLimit ctxt files tfrees n thm =
     1.8 +fun res_atp_tac res_atp_oracle tptp_form make_nnf timeLimit ctxt files tfrees n thm =
     1.9      SELECT_GOAL
    1.10  	((EVERY1 [rtac ccontr,ObjectLogic.atomize_tac, skolemize_tac, 
    1.11  		  METAHYPS(fn negs =>
    1.12  			      HEADGOAL(Tactic.rtac 
    1.13  					   (res_atp_oracle (ProofContext.theory_of ctxt) 
    1.14 -							   ((ResAtpSetup.tptp_form (make_clauses (map make_nnf negs)) n tfrees)::files, timeLimit))))]) handle Fail _ => no_tac) n thm;
    1.15 +							   ((tptp_form (make_clauses (map make_nnf negs)) n tfrees)::files, timeLimit))))]) handle Fail _ => no_tac) n thm;
    1.16  
    1.17 +(* vampire and eprover tactics *)
    1.18 +val vampireF_tac = res_atp_tac vampire_oracle ResAtpSetup.tptp_form make_nnf (!vampire_time);
    1.19  
    1.20 -(* vampire_tac and eprover_tac *)
    1.21 -val vampire_tac = res_atp_tac vampire_oracle (!vampire_time);
    1.22 +val vampireH_tac = res_atp_tac vampire_oracle ResAtpSetup.tptp_formH make_nnf1 (!vampire_time);
    1.23  
    1.24 -val eprover_tac = res_atp_tac eprover_oracle (!eprover_time);
    1.25 +val eproverF_tac = res_atp_tac eprover_oracle ResAtpSetup.tptp_form make_nnf (!eprover_time);
    1.26  
    1.27 +val eproverH_tac = res_atp_tac eprover_oracle ResAtpSetup.tptp_formH make_nnf1 (!eprover_time);
    1.28  
    1.29  val ResAtps_setup = [Method.add_methods 
    1.30 -		 [("vampire", ResAtpSetup.atp_method vampire_tac, "A Vampire method"),
    1.31 -		   ("eprover", ResAtpSetup.atp_method eprover_tac, "A E prover method")]];
    1.32 +		 [("vampireF", ResAtpSetup.atp_method_F vampireF_tac, "A Vampire method for FOL problems"),
    1.33 +		   ("eproverF", ResAtpSetup.atp_method_F eproverF_tac, "A E prover method for FOL problems"),
    1.34 +			("vampireH",ResAtpSetup.atp_method_H vampireH_tac, "A Vampire method for HOL problems"),
    1.35 +				("eproverH",ResAtpSetup.atp_method_H eproverH_tac,"A E prover method for HOL problems")]];
    1.36  
    1.37  
    1.38