author | haftmann |
Fri, 28 Oct 2005 17:27:49 +0200 | |
changeset 18014 | 8bedb073e628 |
parent 18001 | 6ca14bec7cd5 |
child 18086 | 051b7f323b4c |
permissions | -rw-r--r-- |
17907 | 1 |
(* ID: $Id$ |
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 |
structure ResAtpSetup = |
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 |
|
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 |
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
|
8 |
|
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 |
val keep_atp_input = ref false; |
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
|
10 |
val debug = ref true; |
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
|
11 |
val filter_ax = ref false; |
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
|
12 |
|
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 |
|
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 |
fun warning_thm thm nm = warning (nm ^ " " ^ (string_of_thm thm)); |
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 |
|
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
|
16 |
fun warning_thms_n n thms nm = |
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
|
17 |
let val _ = warning ("total " ^ (string_of_int n) ^ " " ^ nm) |
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
|
18 |
fun warning_thms_aux [] = warning ("no more " ^ nm) |
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 |
| warning_thms_aux (th::ths) = (warning_thm th nm; warning_thms_aux ths) |
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
|
20 |
in |
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
|
21 |
warning_thms_aux thms |
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
|
22 |
end; |
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 |
|
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
|
24 |
|
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
|
25 |
(*******************************************************) |
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 |
(* set up the output paths *) |
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
|
27 |
(*******************************************************) |
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
|
28 |
|
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
|
29 |
val claset_file = File.tmp_path (Path.basic "claset"); |
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 |
val simpset_file = File.tmp_path (Path.basic "simp"); |
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
|
31 |
|
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
|
32 |
val prob_file = File.tmp_path (Path.basic "prob"); |
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
|
33 |
val hyps_file = File.tmp_path (Path.basic "hyps"); |
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
|
34 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
35 |
val types_sorts_file = File.tmp_path (Path.basic "typsorts"); |
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 |
|
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
|
37 |
(*******************************************************) |
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
|
38 |
(* operations on Isabelle theorems: *) |
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
|
39 |
(* retrieving from ProofContext, *) |
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
|
40 |
(* modifying local theorems, *) |
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
|
41 |
(* CNF *) |
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
|
42 |
(*******************************************************) |
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
|
43 |
|
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
|
44 |
(* a special version of repeat_RS *) |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
45 |
fun repeat_someI_ex thm = ResAxioms.repeat_RS thm someI_ex; |
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
|
46 |
|
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
|
47 |
val include_simpset = ref false; |
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 |
val include_claset = ref false; |
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
|
49 |
|
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
|
50 |
val add_simpset = (fn () => include_simpset:=true); |
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
|
51 |
val add_claset = (fn () => include_claset:=true); |
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
|
52 |
val add_clasimp = (fn () => include_simpset:=true;include_claset:=true); |
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
|
53 |
val rm_simpset = (fn () => include_simpset:=false); |
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
|
54 |
val rm_claset = (fn () => include_claset:=false); |
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
|
55 |
val rm_clasimp = (fn () => include_simpset:=false;include_claset:=false); |
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
|
56 |
|
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
|
57 |
|
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
|
58 |
|
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
|
59 |
val rules_modifiers = |
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
|
60 |
Simplifier.simp_modifiers @ Splitter.split_modifiers @ |
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
|
61 |
Classical.cla_modifiers @ iff_modifiers; |
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
|
62 |
|
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
|
63 |
|
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
|
64 |
|
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
|
65 |
fun get_local_claR ctxt = |
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
|
66 |
let val cla_rules = rep_cs (Classical.get_local_claset ctxt) |
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
|
67 |
val safeEs = #safeEs cla_rules |
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
|
68 |
val safeIs = #safeIs cla_rules |
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
|
69 |
val hazEs = #hazEs cla_rules |
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
|
70 |
val hazIs = #hazIs cla_rules |
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
|
71 |
in |
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
|
72 |
map ResAxioms.pairname (safeEs @ safeIs @ hazEs @ hazIs) |
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
|
73 |
end; |
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
|
74 |
|
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
|
75 |
|
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
|
76 |
fun get_local_simpR ctxt = |
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
|
77 |
let val simpset_rules = #rules(fst (rep_ss (Simplifier.get_local_simpset ctxt))) |
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
|
78 |
in |
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
|
79 |
map (fn r => (#name r, #thm r)) (Net.entries simpset_rules) end; |
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
|
80 |
|
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
|
81 |
|
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
|
82 |
|
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
|
83 |
(***************************************************************) |
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
|
84 |
(* prover-specific output format: *) |
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
|
85 |
(* TPTP *) |
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
|
86 |
(***************************************************************) |
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
|
87 |
|
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
|
88 |
|
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
|
89 |
|
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
|
90 |
|
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
|
91 |
(***************** TPTP format *********************************) |
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
|
92 |
|
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
|
93 |
(* convert each (sub)goal clause (Thm.thm) into one or more TPTP clauses. The additional TPTP clauses are tfree_lits. Write the output TPTP clauses to a problem file *) |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
94 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
95 |
fun mk_conjectures is_fol terms = |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
96 |
if is_fol then |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
97 |
ListPair.unzip (map ResClause.clause2tptp (ResClause.make_conjecture_clauses terms)) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
98 |
else |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
99 |
ListPair.unzip (map ResHolClause.clause2tptp (ResHolClause.make_conjecture_clauses terms)); |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
100 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
101 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
102 |
fun tptp_form_g is_fol thms n tfrees = |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
103 |
let val terms = map prop_of thms |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
104 |
val (tptp_clss,tfree_litss) = mk_conjectures is_fol terms |
17939
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
105 |
val tfree_clss = map ResClause.tfree_clause ((ResClause.union_all tfree_litss) \\ tfrees) |
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
|
106 |
val probfile = File.platform_path prob_file ^ "_" ^ string_of_int n |
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
|
107 |
val out = TextIO.openOut(probfile) |
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
|
108 |
in |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
109 |
ResAtp.writeln_strs out (tfree_clss @ tptp_clss); |
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
|
110 |
TextIO.closeOut out; |
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
|
111 |
warning probfile; (* show the location for debugging *) |
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
|
112 |
probfile (* return the location *) |
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
|
113 |
|
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
|
114 |
end; |
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
|
115 |
|
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
|
116 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
117 |
val tptp_form = tptp_form_g true; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
118 |
val tptp_formH = tptp_form_g false; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
119 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
120 |
fun tptp_hyps_g _ [] = ([], []) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
121 |
| tptp_hyps_g is_fol thms = |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
122 |
let val mk_nnf = if is_fol then make_nnf else make_nnf1 |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
123 |
val prems = map (skolemize o mk_nnf o ObjectLogic.atomize_thm) thms |
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
|
124 |
val prems' = map repeat_someI_ex prems |
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
|
125 |
val prems'' = make_clauses prems' |
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
|
126 |
val prems''' = ResAxioms.rm_Eps [] prems'' |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
127 |
val (tptp_clss,tfree_litss) = mk_conjectures is_fol prems''' |
17939
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
128 |
val tfree_lits = ResClause.union_all tfree_litss |
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
|
129 |
val tfree_clss = map ResClause.tfree_clause tfree_lits |
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
|
130 |
val hypsfile = File.platform_path hyps_file |
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
|
131 |
val out = TextIO.openOut(hypsfile) |
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
|
132 |
in |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
133 |
ResAtp.writeln_strs out (tfree_clss @ tptp_clss); |
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
|
134 |
TextIO.closeOut out; warning hypsfile; |
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
|
135 |
([hypsfile],tfree_lits) |
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
|
136 |
end; |
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
|
137 |
|
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
|
138 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
139 |
val tptp_hyps = tptp_hyps_g true; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
140 |
val tptp_hypsH = tptp_hyps_g false; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
141 |
|
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
|
142 |
fun subtract_simpset thy ctxt = |
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
|
143 |
let |
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
|
144 |
val rules1 = #rules (#1 (rep_ss (simpset_of thy))); |
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
|
145 |
val rules2 = #rules (#1 (rep_ss (local_simpset_of ctxt))); |
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
|
146 |
in map ResAxioms.pairname (map #thm (Net.subtract MetaSimplifier.eq_rrule rules1 rules2)) end; |
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
|
147 |
|
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
|
148 |
fun subtract_claset thy ctxt = |
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
|
149 |
let |
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
|
150 |
val (netI1, netE1) = #xtra_netpair (rep_cs (claset_of thy)); |
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
|
151 |
val (netI2, netE2) = #xtra_netpair (rep_cs (local_claset_of ctxt)); |
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
|
152 |
val subtract = map (#2 o #2) oo Net.subtract Tactic.eq_kbrl; |
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
|
153 |
in map ResAxioms.pairname (subtract netI1 netI2 @ subtract netE1 netE2) end; |
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
|
154 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
155 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
156 |
fun mk_axioms is_fol rules = |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
157 |
if is_fol then |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
158 |
(let val clss = ResClause.union_all(ResAxioms.clausify_rules_pairs rules) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
159 |
val (clss',names) = ListPair.unzip clss |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
160 |
val (tptpclss,_) = ListPair.unzip(map ResClause.clause2tptp clss') |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
161 |
in tptpclss end) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
162 |
else |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
163 |
(let val clss = ResClause.union_all(ResAxioms.clausify_rules_pairsH rules) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
164 |
val (clss',names) = ListPair.unzip clss |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
165 |
val (tptpclss,_) = ListPair.unzip(map ResHolClause.clause2tptp clss') |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
166 |
in tptpclss end) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
167 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
168 |
|
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
|
169 |
local |
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
|
170 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
171 |
fun write_rules_g is_fol [] file = [](* no rules, then no need to write anything, thus no clasimp file *) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
172 |
| write_rules_g is_fol rules file = |
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
|
173 |
let val out = TextIO.openOut(file) |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
174 |
val tptpclss = mk_axioms is_fol rules |
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
|
175 |
in |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
176 |
ResAtp.writeln_strs out tptpclss; |
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
|
177 |
TextIO.closeOut out; warning file; |
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
|
178 |
[file] |
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
|
179 |
end; |
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
|
180 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
181 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
182 |
val write_rules = write_rules_g true; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
183 |
val write_rulesH = write_rules_g false; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
184 |
|
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
|
185 |
in |
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
|
186 |
|
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
|
187 |
(* TPTP Isabelle theorems *) |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
188 |
fun tptp_cnf_rules_g write_rules (clasetR,simpsetR) = |
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
|
189 |
let val simpfile = File.platform_path simpset_file |
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
|
190 |
val clafile = File.platform_path claset_file |
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
|
191 |
in |
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
|
192 |
(write_rules clasetR clafile) @ (write_rules simpsetR simpfile) |
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
|
193 |
end; |
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
|
194 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
195 |
val tptp_cnf_rules = tptp_cnf_rules_g write_rules; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
196 |
val tptp_cnf_rulesH = tptp_cnf_rules_g write_rulesH; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
197 |
|
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
|
198 |
end |
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
|
199 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
200 |
fun tptp_cnf_clasimp_g tptp_cnf_rules ctxt (include_claset,include_simpset) = |
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
|
201 |
let val local_claR = if include_claset then get_local_claR ctxt else (subtract_claset (ProofContext.theory_of ctxt) ctxt) |
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
|
202 |
val local_simpR = if include_simpset then get_local_simpR ctxt else (subtract_simpset (ProofContext.theory_of ctxt) ctxt) |
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
|
203 |
|
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
|
204 |
in |
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
|
205 |
tptp_cnf_rules (local_claR,local_simpR) |
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
|
206 |
end; |
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
|
207 |
|
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
|
208 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
209 |
val tptp_cnf_clasimp = tptp_cnf_clasimp_g tptp_cnf_rules; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
210 |
val tptp_cnf_clasimpH = tptp_cnf_clasimp_g tptp_cnf_rulesH; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
211 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
212 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
213 |
fun tptp_types_sorts thy = |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
214 |
let val classrel_clauses = ResClause.classrel_clauses_thy thy |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
215 |
val arity_clauses = ResClause.arity_clause_thy thy |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
216 |
val classrel_cls = map ResClause.tptp_classrelClause classrel_clauses |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
217 |
val arity_cls = map ResClause.tptp_arity_clause arity_clauses |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
218 |
fun write_ts () = |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
219 |
let val tsfile = File.platform_path types_sorts_file |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
220 |
val out = TextIO.openOut(tsfile) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
221 |
in |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
222 |
ResAtp.writeln_strs out (classrel_cls @ arity_cls); |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
223 |
TextIO.closeOut out; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
224 |
[tsfile] |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
225 |
end |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
226 |
in |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
227 |
if (List.null arity_cls andalso List.null classrel_cls) then [] |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
228 |
else |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
229 |
write_ts () |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
230 |
end; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
231 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
232 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
233 |
|
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
|
234 |
(*FIXME: a function that does not perform any filtering now *) |
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
|
235 |
fun find_relevant_ax ctxt = tptp_cnf_clasimp ctxt (true,true); |
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
|
236 |
|
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
|
237 |
|
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
|
238 |
(***************************************************************) |
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
|
239 |
(* setup ATPs as Isabelle methods *) |
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
|
240 |
(***************************************************************) |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
241 |
fun atp_meth_g tptp_hyps tptp_cnf_clasimp tac prems ctxt = |
17939
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
242 |
let val rules = if !filter_ax then find_relevant_ax ctxt |
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
243 |
else tptp_cnf_clasimp ctxt (!include_claset, !include_simpset) |
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
|
244 |
val (hyps,tfrees) = tptp_hyps (ProofContext.prems_of ctxt) |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
245 |
val thy = ProofContext.theory_of ctxt |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
246 |
val tsfile = tptp_types_sorts thy |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
247 |
val files = hyps @ rules @ tsfile |
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
|
248 |
in |
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
|
249 |
Method.METHOD (fn facts => |
17939
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
250 |
if !debug then (warning_thms_n (length facts) facts "facts";HEADGOAL (tac ctxt files tfrees)) |
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
251 |
else HEADGOAL (tac ctxt files tfrees)) |
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
|
252 |
end; |
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
|
253 |
|
18014 | 254 |
fun atp_meth_f tac = atp_meth_g tptp_hyps tptp_cnf_clasimp 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
|
255 |
|
18014 | 256 |
fun atp_meth_h tac = atp_meth_g tptp_hypsH tptp_cnf_clasimpH tac; |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
257 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
258 |
fun atp_meth_G atp_meth tac prems ctxt = |
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
|
259 |
let val _ = ResClause.init (ProofContext.theory_of ctxt) |
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
|
260 |
in |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
261 |
if not(List.null prems) then (warning_thms_n (length prems) prems "prems!!!"; atp_meth tac prems ctxt) |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
262 |
else (atp_meth tac prems ctxt) |
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
|
263 |
end; |
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
|
264 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
265 |
|
18014 | 266 |
fun atp_meth_H tac = atp_meth_G atp_meth_h tac; |
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
267 |
|
18014 | 268 |
fun atp_meth_F tac = atp_meth_G atp_meth_f 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
|
269 |
|
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
|
270 |
|
18001
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
271 |
val atp_method_H = Method.bang_sectioned_args rules_modifiers o atp_meth_H; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
272 |
|
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
273 |
val atp_method_F = Method.bang_sectioned_args rules_modifiers o atp_meth_F; |
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
mengj
parents:
17939
diff
changeset
|
274 |
|
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
|
275 |
|
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
|
276 |
|
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
|
277 |
(*************Remove tmp files********************************) |
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
|
278 |
fun rm_tmp_files1 [] = () |
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
|
279 |
| rm_tmp_files1 (f::fs) = |
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
|
280 |
(OS.FileSys.remove f; rm_tmp_files1 fs); |
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
|
281 |
|
17939
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
282 |
fun cond_rm_tmp files = |
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
283 |
if !keep_atp_input then warning "ATP input kept..." |
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
mengj
parents:
17907
diff
changeset
|
284 |
else (warning "deleting ATP inputs..."; rm_tmp_files1 files); |
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
|
285 |
|
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
|
286 |
|
17907 | 287 |
end |