| author | huffman | 
| Sat, 16 Sep 2006 23:46:38 +0200 | |
| changeset 20557 | 81dd3679f92c | 
| parent 19723 | 7602f74c914b | 
| child 23590 | ad95084a5c63 | 
| permissions | -rw-r--r-- | 
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 1 | (* ID: $Id$ | 
| 17907 | 2 | Author: Jia Meng, NICTA | 
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 3 | *) | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 4 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 5 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 6 | structure ResAtpMethods = | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 7 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 8 | struct | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 9 | |
| 19193 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 10 | (* convert the negated 1st subgoal into CNF, write to file and call an ATP oracle *) | 
| 19723 | 11 | fun res_atp_tac dfg res_atp_oracle mode timeLimit ctxt user_thms n thm = | 
| 19193 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 12 | (EVERY' [rtac ccontr,ObjectLogic.atomize_tac, skolemize_tac, | 
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 13 | METAHYPS(fn negs => | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 14 | HEADGOAL(Tactic.rtac | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 15 | (res_atp_oracle (ProofContext.theory_of ctxt) | 
| 19723 | 16 | (ResAtp.write_subgoal_file dfg mode ctxt negs user_thms n, timeLimit))))] n thm) handle (Fail _) => Seq.empty; | 
| 17 | ||
| 18 | (* vampire, eprover and spass tactics *) | |
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 19 | |
| 19723 | 20 | fun vampire_tac st = res_atp_tac false vampire_oracle ResAtp.Auto (!ResAtp.vampire_time) st; | 
| 21 | fun eprover_tac st = res_atp_tac false eprover_oracle ResAtp.Auto (!ResAtp.eprover_time) st; | |
| 22 | fun spass_tac st = res_atp_tac true spass_oracle ResAtp.Auto (!ResAtp.spass_time) st; | |
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 23 | |
| 18271 
0e9a851db989
Added two methods "vampire" and "eprover" that handle both HOL and FOL proofs.
 mengj parents: 
18195diff
changeset | 24 | |
| 19723 | 25 | fun vampireF_tac st = res_atp_tac false vampire_oracle ResAtp.Fol (!ResAtp.vampire_time) st; | 
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 26 | |
| 19723 | 27 | fun vampireH_tac st = res_atp_tac false vampire_oracle ResAtp.Hol (!ResAtp.vampire_time) st; | 
| 28 | ||
| 29 | fun eproverF_tac st = res_atp_tac false eprover_oracle ResAtp.Fol (!ResAtp.eprover_time) st; | |
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 30 | |
| 19723 | 31 | fun eproverH_tac st = res_atp_tac false eprover_oracle ResAtp.Hol (!ResAtp.eprover_time) st; | 
| 18271 
0e9a851db989
Added two methods "vampire" and "eprover" that handle both HOL and FOL proofs.
 mengj parents: 
18195diff
changeset | 32 | |
| 19723 | 33 | fun spassF_tac st = res_atp_tac true spass_oracle ResAtp.Fol (!ResAtp.spass_time) st; | 
| 34 | ||
| 35 | fun spassH_tac st = res_atp_tac true spass_oracle ResAtp.Hol (!ResAtp.spass_time) st; | |
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 36 | |
| 18708 | 37 | val ResAtps_setup = | 
| 38 | Method.add_methods | |
| 19193 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 39 |     [("vampireF", ResAtp.atp_method vampireF_tac, "Vampire for FOL problems"),
 | 
| 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 40 |      ("eproverF", ResAtp.atp_method eproverF_tac, "E prover for FOL problems"),
 | 
| 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 41 |      ("vampireH", ResAtp.atp_method vampireH_tac, "Vampire for HOL problems"),
 | 
| 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 42 |      ("eproverH", ResAtp.atp_method eproverH_tac, "E prover for HOL problems"),
 | 
| 
45c8db82893d
When ATP methods call ATPs, all input clauses from one subgoal are written to one file.
 mengj parents: 
19128diff
changeset | 43 |      ("eprover", ResAtp.atp_method eprover_tac, "E prover for FOL and HOL problems"),
 | 
| 19723 | 44 |      ("vampire", ResAtp.atp_method vampire_tac, "Vampire for FOL and HOL problems"),
 | 
| 45 |      ("spassF", ResAtp.atp_method spassF_tac, "SPASS for FOL problems"),
 | |
| 46 |      ("spassH", ResAtp.atp_method spassH_tac, "SPASS for HOL problems"),
 | |
| 47 |      ("spass", ResAtp.atp_method spass_tac, "SPASS for FOL and HOL problems")];
 | |
| 17905 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 48 | |
| 17907 | 49 | end |