| author | mengj | 
| Wed, 19 Oct 2005 10:25:46 +0200 | |
| changeset 17907 | c20e4bddcb11 | 
| parent 17905 | 1574533861b1 | 
| child 17939 | 3925ab7b8a18 | 
| 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 writeln_strs _ [] = ()  | 
| 
 
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  | 
| writeln_strs out (s::ss) = (TextIO.output (out, s); TextIO.output (out, "\n"); writeln_strs out ss);  | 
| 
 
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  | 
|
| 
 
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  | 
|
| 
 
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 no_rep_add x [] = [x]  | 
| 
 
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  | 
| no_rep_add x (y::z) = if x=y then y::z else y::(no_rep_add x z);  | 
| 
 
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  | 
|
| 
 
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  | 
fun no_rep_app l1 [] = l1  | 
| 
 
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  | 
| no_rep_app l1 (x::y) = no_rep_app (no_rep_add x l1) y;  | 
| 
 
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  | 
fun flat_noDup [] = []  | 
| 
 
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  | 
| flat_noDup (x::y) = no_rep_app x (flat_noDup y);  | 
| 
 
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  | 
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
 | 
29  | 
|
| 
 
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  | 
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
 | 
31  | 
    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
 | 
32  | 
	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
 | 
33  | 
| 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
 | 
34  | 
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
 | 
35  | 
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
 | 
36  | 
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
 | 
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  | 
|
| 
 
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  | 
(*******************************************************)  | 
| 
 
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  | 
(* 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
 | 
41  | 
(*******************************************************)  | 
| 
 
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  | 
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
 | 
44  | 
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
 | 
45  | 
|
| 
 
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  | 
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
 | 
47  | 
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
 | 
48  | 
|
| 
 
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  | 
|
| 
 
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  | 
(*******************************************************)  | 
| 
 
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  | 
(* 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
 | 
53  | 
(* 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
 | 
54  | 
(* 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
 | 
55  | 
(* 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
 | 
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  | 
fun repeat_RS thm1 thm2 =  | 
| 
 
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  | 
let val thm1' = thm1 RS thm2 handle THM _ => thm1  | 
| 
 
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  | 
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
 | 
61  | 
if eq_thm(thm1,thm1') then thm1' else (repeat_RS thm1' thm2)  | 
| 
 
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  | 
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
 | 
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  | 
(* a special version of repeat_RS *)  | 
| 
 
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 repeat_someI_ex thm = repeat_RS thm someI_ex;  | 
| 
 
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  | 
|
| 
 
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 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
 | 
68  | 
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
 | 
69  | 
|
| 
 
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 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
 | 
71  | 
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
 | 
72  | 
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
 | 
73  | 
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
 | 
74  | 
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
 | 
75  | 
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
 | 
76  | 
|
| 
 
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  | 
|
| 
 
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  | 
|
| 
 
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  | 
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
 | 
80  | 
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
 | 
81  | 
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
 | 
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  | 
|
| 
 
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  | 
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
 | 
86  | 
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
 | 
87  | 
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
 | 
88  | 
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
 | 
89  | 
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
 | 
90  | 
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
 | 
91  | 
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
 | 
92  | 
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
 | 
93  | 
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
 | 
94  | 
|
| 
 
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
 | 
95  | 
|
| 
 
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
 | 
96  | 
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
 | 
97  | 
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
 | 
98  | 
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
 | 
99  | 
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
 | 
100  | 
|
| 
 
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
 | 
101  | 
|
| 
 
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
 | 
102  | 
|
| 
 
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
 | 
103  | 
(***************************************************************)  | 
| 
 
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
 | 
104  | 
(* 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
 | 
105  | 
(* 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
 | 
106  | 
(***************************************************************)  | 
| 
 
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  | 
|
| 
 
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  | 
|
| 
 
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
 | 
109  | 
|
| 
 
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  | 
|
| 
 
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  | 
(***************** 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
 | 
112  | 
|
| 
 
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  | 
(* 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 *)  | 
| 
 
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  | 
fun tptp_form thms n tfrees =  | 
| 
 
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  | 
let val clss = ResClause.make_conjecture_clauses (map prop_of 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
 | 
116  | 
val (tptp_clss,tfree_litss) = ListPair.unzip (map ResClause.clause2tptp clss)  | 
| 
 
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
 | 
117  | 
val tfree_clss = map ResClause.tfree_clause ((flat_noDup tfree_litss) \\ tfrees)  | 
| 
 
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
 | 
118  | 
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
 | 
119  | 
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
 | 
120  | 
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
 | 
121  | 
writeln_strs out (tfree_clss @ tptp_clss);  | 
| 
 
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
 | 
122  | 
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
 | 
123  | 
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
 | 
124  | 
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
 | 
125  | 
|
| 
 
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  | 
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
 | 
127  | 
|
| 
 
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
 | 
128  | 
|
| 
 
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  | 
fun tptp_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
 | 
130  | 
| tptp_hyps 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
 | 
131  | 
let val prems = map (skolemize o make_nnf o ObjectLogic.atomize_thm) 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
 | 
132  | 
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
 | 
133  | 
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
 | 
134  | 
val prems''' = ResAxioms.rm_Eps [] 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
 | 
135  | 
val clss = ResClause.make_conjecture_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
 | 
136  | 
val (tptp_clss,tfree_litss) = ListPair.unzip (map ResClause.clause2tptp clss)  | 
| 
 
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  | 
val tfree_lits = flat_noDup tfree_litss  | 
| 
 
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  | 
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
 | 
139  | 
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
 | 
140  | 
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
 | 
141  | 
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
 | 
142  | 
writeln_strs out (tfree_clss @ tptp_clss);  | 
| 
 
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  | 
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
 | 
144  | 
([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
 | 
145  | 
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
 | 
146  | 
|
| 
 
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_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
 | 
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 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
 | 
151  | 
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
 | 
152  | 
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
 | 
153  | 
|
| 
 
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  | 
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
 | 
155  | 
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
 | 
156  | 
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
 | 
157  | 
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
 | 
158  | 
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
 | 
159  | 
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
 | 
160  | 
|
| 
 
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
 | 
161  | 
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
 | 
162  | 
|
| 
 
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
 | 
163  | 
fun write_rules [] file = [](* no rules, then no need to write anything, thus no clasimp 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
 | 
164  | 
| write_rules rules 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
 | 
165  | 
let val out = TextIO.openOut(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
 | 
166  | 
val clss = flat_noDup(ResAxioms.clausify_rules_pairs 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
 | 
167  | 
val (clss',names) = ListPair.unzip clss  | 
| 
 
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
 | 
168  | 
val (tptpclss,_) = ListPair.unzip(map ResClause.clause2tptp clss')  | 
| 
 
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  | 
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
 | 
170  | 
writeln_strs out tptpclss;  | 
| 
 
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
 | 
171  | 
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
 | 
172  | 
[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
 | 
173  | 
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
 | 
174  | 
|
| 
 
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  | 
| 
 
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
 | 
176  | 
|
| 
 
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  | 
(* TPTP 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
 | 
178  | 
fun tptp_cnf_rules (clasetR,simpsetR) =  | 
| 
 
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  | 
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
 | 
180  | 
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
 | 
181  | 
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
 | 
182  | 
(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
 | 
183  | 
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
 | 
184  | 
|
| 
 
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  | 
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
 | 
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  | 
fun tptp_cnf_clasimp ctxt (include_claset,include_simpset) =  | 
| 
 
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
 | 
188  | 
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
 | 
189  | 
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
 | 
190  | 
|
| 
 
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  | 
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
 | 
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  | 
|
| 
 
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
 | 
195  | 
|
| 
 
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
 | 
196  | 
(*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
 | 
197  | 
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
 | 
198  | 
|
| 
 
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  | 
|
| 
 
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
 | 
200  | 
|
| 
 
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  | 
(***************************************************************)  | 
| 
 
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  | 
(* 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
 | 
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  | 
fun atp_meth' tac prems 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
 | 
205  | 
let val rules = if !filter_ax then (find_relevant_ax ctxt) else (tptp_cnf_clasimp ctxt (!include_claset, !include_simpset))  | 
| 
 
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  | 
val (hyps,tfrees) = tptp_hyps (ProofContext.prems_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
 | 
207  | 
val files = hyps @ 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
 | 
208  | 
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
 | 
209  | 
Method.METHOD (fn facts =>  | 
| 
 
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
 | 
210  | 
if !debug then ((warning_thms_n (length facts) facts "facts");HEADGOAL (tac ctxt files tfrees)) else (HEADGOAL (tac ctxt files tfrees)))  | 
| 
 
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
 | 
211  | 
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
 | 
212  | 
|
| 
 
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
 | 
213  | 
|
| 
 
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
 | 
214  | 
fun atp_meth tac prems 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
 | 
215  | 
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
 | 
216  | 
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
 | 
217  | 
if not(List.null prems) then (warning_thms_n (length prems) prems "prems!!!"; atp_meth' tac prems 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
 | 
218  | 
else (atp_meth' tac prems 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
 | 
219  | 
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
 | 
220  | 
|
| 
 
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
 | 
221  | 
val atp_method = Method.bang_sectioned_args rules_modifiers o atp_meth;  | 
| 
 
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
 | 
222  | 
|
| 
 
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
 | 
223  | 
|
| 
 
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
 | 
224  | 
|
| 
 
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
 | 
225  | 
|
| 
 
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
 | 
226  | 
(*************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
 | 
227  | 
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
 | 
228  | 
| 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
 | 
229  | 
(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
 | 
230  | 
|
| 
 
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
 | 
231  | 
fun cond_rm_tmp files = (if (!keep_atp_input) then (warning "ATP input kept...") else (warning "deleting ATP inputs..."; rm_tmp_files1 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
 | 
232  | 
|
| 
 
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
 | 
233  | 
|
| 17907 | 234  | 
end  |