| author | wenzelm | 
| Sat, 13 May 2006 02:51:40 +0200 | |
| changeset 19629 | c107e7a79559 | 
| parent 19446 | 30e1178d7a3b | 
| child 20854 | f9cf9e62d11c | 
| 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; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 11 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 12 | val fol_keep_types = ResClause.keep_types; | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 13 | |
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 14 | (* use them to set and find type levels of HOL clauses *) | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 15 | val hol_full_types = ResHolClause.full_types; | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 16 | val hol_partial_types = ResHolClause.partial_types; | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 17 | val hol_const_types_only = ResHolClause.const_types_only; | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 18 | val hol_no_types = ResHolClause.no_types; | 
| 18748 | 19 | fun hol_typ_level () = ResHolClause.find_typ_level (); | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 20 | |
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 21 | fun is_typed_hol () = | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 22 | let val tp_level = hol_typ_level() | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 23 | in | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 24 | not (tp_level = ResHolClause.T_NONE) | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 25 | end; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 26 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 27 | val include_combS = ResHolClause.include_combS; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 28 | val include_min_comb = ResHolClause.include_min_comb; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 29 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 30 | |
| 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 | 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 | (*******************************************************) | 
| 
1574533861b1
Added files 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 | (* 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 | 34 | (*******************************************************) | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 35 | fun full_typed_comb () = | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 36 | if !ResHolClause.include_combS then | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 37 | (ResAtp.helper_path "E_HOME" "additionals/full_comb_inclS" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 38 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/full_comb_inclS") | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 39 | else | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 40 | (ResAtp.helper_path "E_HOME" "additionals/full_comb_noS" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 41 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/full_comb_noS"); | 
| 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 | 42 | |
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 43 | fun partial_typed_comb () = | 
| 18197 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 44 | if !ResHolClause.include_combS then | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 45 | (ResAtp.helper_path "E_HOME" "additionals/par_comb_inclS" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 46 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/par_comb_inclS") | 
| 18197 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 47 | else | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 48 | (ResAtp.helper_path "E_HOME" "additionals/par_comb_noS" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 49 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/par_comb_noS"); | 
| 18197 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 50 | |
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 51 | fun const_typed_comb () = | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 52 | if !ResHolClause.include_combS then | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 53 | (ResAtp.helper_path "E_HOME" "additionals/const_comb_inclS" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 54 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/const_comb_inclS") | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 55 | else | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 56 | (ResAtp.helper_path "E_HOME" "additionals/const_comb_noS" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 57 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/const_comb_noS"); | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 58 | |
| 18197 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 59 | fun untyped_comb () = | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 60 | if !ResHolClause.include_combS then | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 61 | (ResAtp.helper_path "E_HOME" "additionals/u_comb_inclS" | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 62 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/u_comb_inclS") | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 63 | else | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 64 | (ResAtp.helper_path "E_HOME" "additionals/u_comb_noS" | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 65 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/u_comb_noS"); | 
| 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 66 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 67 | |
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 68 | fun full_typed_HOL_helper1 () = | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 69 | ResAtp.helper_path "E_HOME" "additionals/full_helper1" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 70 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/full_helper1"; | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 71 | |
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 72 | fun partial_typed_HOL_helper1 () = | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 73 | ResAtp.helper_path "E_HOME" "additionals/par_helper1" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 74 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/par_helper1"; | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 75 | |
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 76 | fun const_typed_HOL_helper1 () = | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 77 | ResAtp.helper_path "E_HOME" "additionals/const_helper1" | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 78 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/const_helper1"; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 79 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 80 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 81 | fun untyped_HOL_helper1 () = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 82 | ResAtp.helper_path "E_HOME" "additionals/u_helper1" | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 83 | handle _ => ResAtp.helper_path "VAMPIRE_HOME" "additionals/u_helper1"; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 84 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 85 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 86 | fun HOL_helper1 () = | 
| 18748 | 87 | let val tp_level = !ResHolClause.typ_level | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 88 | in | 
| 18748 | 89 | case tp_level of ResHolClause.T_PARTIAL => (warning "Partial type helper"; partial_typed_HOL_helper1 ()) | 
| 90 | | ResHolClause.T_FULL => (warning "Full type helper"; full_typed_HOL_helper1 ()) | |
| 91 | | ResHolClause.T_CONST => (warning "Const type helper"; const_typed_HOL_helper1 ()) | |
| 92 | | ResHolClause.T_NONE => (warning "Untyped helper"; untyped_HOL_helper1 ()) | |
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 93 | end; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 94 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 95 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 96 | fun HOL_comb () = | 
| 18748 | 97 | let val tp_level = !ResHolClause.typ_level | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 98 | in | 
| 18748 | 99 | case tp_level of ResHolClause.T_FULL => (warning "Full type comb"; full_typed_comb ()) | 
| 100 | | ResHolClause.T_PARTIAL => (warning "Partial type comb"; partial_typed_comb ()) | |
| 101 | | ResHolClause.T_CONST => (warning "Const type comb"; const_typed_comb ()) | |
| 102 | | ResHolClause.T_NONE => (warning "Untyped comb"; untyped_comb ()) | |
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 103 | end; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 104 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 105 | |
| 18401 | 106 | fun atp_input_file file = | 
| 107 | let val file' = !ResAtp.problem_name ^ "_" ^ file | |
| 108 | in | |
| 109 | if !ResAtp.destdir = "" then File.platform_path (File.tmp_path (Path.basic file')) | |
| 110 | else if File.exists (File.unpack_platform_path (!ResAtp.destdir)) | |
| 111 | then !ResAtp.destdir ^ "/" ^ file' | |
| 112 | 	else error ("No such directory: " ^ !ResAtp.destdir)
 | |
| 113 | end; | |
| 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 | 114 | |
| 18401 | 115 | fun claset_file () = atp_input_file "claset"; | 
| 116 | fun simpset_file () = atp_input_file "simp"; | |
| 117 | fun local_lemma_file () = atp_input_file "locallemmas"; | |
| 118 | fun hyps_file () = atp_input_file "hyps"; | |
| 119 | fun prob_file _ = atp_input_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 | 120 | |
| 18401 | 121 | fun types_sorts_file () = atp_input_file "typesorts"; | 
| 122 | ||
| 123 | ||
| 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 | |
| 
1574533861b1
Added files 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 | (* 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 | 127 | (* 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 | 128 | (* 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 | 129 | (* 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 | 130 | (*******************************************************) | 
| 
1574533861b1
Added files 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 | |
| 
1574533861b1
Added files 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 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 | 133 | 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 | 134 | |
| 
1574533861b1
Added files 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 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 | 136 | 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 | 137 | 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 | 138 | 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 | 139 | 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 | 140 | 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 | 141 | |
| 
1574533861b1
Added files 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 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 143 | (******************************************************************) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 144 | (* detect whether a given problem (clauses) is FOL/HOL/HOLC/HOLCS *) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 145 | (******************************************************************) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 146 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 147 | datatype logic = FOL | HOL | HOLC | HOLCS; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 148 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 149 | fun string_of_logic FOL = "FOL" | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 150 | | string_of_logic HOL = "HOL" | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 151 | | string_of_logic HOLC = "HOLC" | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 152 | | string_of_logic HOLCS = "HOLCS"; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 153 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 154 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 155 | fun is_fol_logic FOL = true | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 156 | | is_fol_logic _ = false | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 157 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 158 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 159 | (*HOLCS will not occur here*) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 160 | fun upgrade_lg HOLC _ = HOLC | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 161 | | upgrade_lg HOL HOLC = HOLC | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 162 | | upgrade_lg HOL _ = HOL | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 163 | | upgrade_lg FOL lg = lg; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 164 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 165 | (* check types *) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 166 | fun has_bool (Type("bool",_)) = true
 | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 167 | | has_bool (Type(_, Ts)) = exists has_bool Ts | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 168 | | has_bool _ = false; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 169 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 170 | fun has_bool_arg tp = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 171 | let val (targs,tr) = strip_type tp | 
| 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 | 172 | in | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 173 | exists has_bool targs | 
| 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 | 174 | 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 | 175 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 176 | fun is_fn_tp (Type("fun",_)) = true
 | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 177 | | is_fn_tp _ = false; | 
| 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 | 178 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 179 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 180 | exception FN_LG of term; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 181 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 182 | fun fn_lg (t as Const(f,tp)) (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 183 | if has_bool tp then (upgrade_lg HOL lg, t ins seen) else (lg, t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 184 | | fn_lg (t as Free(f,tp)) (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 185 | if has_bool tp then (upgrade_lg HOL lg, t ins seen) else (lg, t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 186 | | fn_lg (t as Var(f,tp)) (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 187 | if is_fn_tp tp orelse has_bool tp then (upgrade_lg HOL lg,t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 188 | else (lg,t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 189 | | fn_lg (t as Abs(_,_,_)) (lg,seen) = (upgrade_lg HOLC lg,t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 190 | | fn_lg f _ = raise FN_LG(f); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 191 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 192 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 193 | fun term_lg [] (lg,seen) = (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 194 | | term_lg (tm::tms) (FOL,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 195 | let val (f,args) = strip_comb tm | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 196 | val (lg',seen') = if f mem seen then (FOL,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 197 | else fn_lg f (FOL,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 198 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 199 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 200 | term_lg (args@tms) (lg',seen') | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 201 | end | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 202 | | term_lg _ (lg,seen) = (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 203 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 204 | exception PRED_LG of term; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 205 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 206 | fun pred_lg (t as Const(P,tp)) (lg,seen)= | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 207 | if has_bool_arg tp then (upgrade_lg HOL lg, t ins seen) else (lg,t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 208 | | pred_lg (t as Free(P,tp)) (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 209 | if has_bool_arg tp then (upgrade_lg HOL lg, t ins seen) else (lg,t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 210 | | pred_lg (t as Var(_,_)) (lg,seen) = (upgrade_lg HOL lg, t ins seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 211 | | pred_lg P _ = raise PRED_LG(P); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 212 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 213 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 214 | fun lit_lg (Const("Not",_) $ P) (lg,seen) = lit_lg P (lg,seen)
 | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 215 | | lit_lg P (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 216 | let val (pred,args) = strip_comb P | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 217 | val (lg',seen') = if pred mem seen then (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 218 | else pred_lg pred (lg,seen) | 
| 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 | 219 | in | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 220 | term_lg args (lg',seen') | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 221 | end; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 222 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 223 | fun lits_lg [] (lg,seen) = (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 224 | | lits_lg (lit::lits) (FOL,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 225 | lits_lg lits (lit_lg lit (FOL,seen)) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 226 | | lits_lg lits (lg,seen) = (lg,seen); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 227 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 228 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 229 | fun logic_of_clause tm (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 230 | let val tm' = HOLogic.dest_Trueprop tm | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 231 | val disjs = HOLogic.dest_disj tm' | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 232 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 233 | lits_lg disjs (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 234 | end; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 235 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 236 | fun lits_lg [] (lg,seen) = (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 237 | | lits_lg (lit::lits) (FOL,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 238 | lits_lg lits (lit_lg lit (FOL,seen)) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 239 | | lits_lg lits (lg,seen) = (lg,seen); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 240 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 241 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 242 | fun logic_of_clause tm (lg,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 243 | let val tm' = HOLogic.dest_Trueprop tm | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 244 | val disjs = HOLogic.dest_disj tm' | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 245 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 246 | lits_lg disjs (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 247 | end; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 248 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 249 | fun logic_of_clauses [] (lg,seen) = (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 250 | | logic_of_clauses (cls::clss) (FOL,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 251 | logic_of_clauses clss (logic_of_clause cls (FOL,seen)) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 252 | | logic_of_clauses (cls::clss) (lg,seen) = (lg,seen); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 253 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 254 | fun logic_of_nclauses [] (lg,seen) = (lg,seen) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 255 | | logic_of_nclauses (cls::clss) (FOL,seen) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 256 | logic_of_nclauses clss (logic_of_clauses (snd cls) (FOL,seen)) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 257 | | logic_of_nclauses clss (lg,seen) = (lg,seen); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 258 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 259 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 260 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 261 | fun problem_logic (conj_cls,hyp_cls,userR,claR,simpR) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 262 | let val (lg1,seen1) = logic_of_clauses conj_cls (FOL,[]) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 263 | val (lg2,seen2) = logic_of_clauses hyp_cls (lg1,seen1) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 264 | val (lg3,seen3) = logic_of_nclauses userR (lg2,seen2) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 265 | val (lg4,seen4) = logic_of_nclauses claR (lg3,seen3) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 266 | val (lg5,seen5) = logic_of_nclauses simpR (lg4,seen4) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 267 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 268 | lg5 | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 269 | end; | 
| 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 | 270 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 271 | (***************************************************************) | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 272 | (* Clauses used by FOL ATPs *) | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 273 | (***************************************************************) | 
| 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 | 274 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 275 | datatype clause = FOLClause of ResClause.clause | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 276 | | HOLClause of ResHolClause.clause | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 277 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 278 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 279 | fun isTaut (FOLClause cls) = ResClause.isTaut cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 280 | | isTaut (HOLClause cls) = ResHolClause.isTaut cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 281 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 282 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 283 | fun clause2tptp (FOLClause cls) = ResClause.clause2tptp cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 284 | | clause2tptp (HOLClause cls) = ResHolClause.clause2tptp cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 285 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 286 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 287 | fun make_clause_fol cls = FOLClause cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 288 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 289 | fun make_clause_hol cls = HOLClause cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 290 | |
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 291 | fun make_conjecture_clauses is_fol terms = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 292 | if is_fol then map make_clause_fol (ResClause.make_conjecture_clauses terms) | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 293 | else | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 294 | map make_clause_hol (ResHolClause.make_conjecture_clauses terms) | 
| 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 | 295 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 296 | (***************************************************************) | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 297 | (* 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 | 298 | (* 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 | 299 | (***************************************************************) | 
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 300 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 301 | (**** CNF rules and hypothesis ****) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 302 | fun cnf_rules_tms ctxt ths (include_claset,include_simpset) = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 303 | let val local_claR = if include_claset then ResAxioms.claset_rules_of_ctxt ctxt else [] | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 304 | val (local_claR_cls,err1) = ResAxioms.cnf_rules2 local_claR [] | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 305 | val local_simpR = if include_simpset then ResAxioms.simpset_rules_of_ctxt ctxt else [] | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 306 | val (local_simpR_cls,err2) = ResAxioms.cnf_rules2 local_simpR [] | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 307 | val (user_ths_cls,err3) = ResAxioms.cnf_rules2 (map ResAxioms.pairname ths) [] | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 308 | val errs = err3 @ err2 @ err1 | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 309 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 310 | (user_ths_cls,local_simpR_cls,local_claR_cls,errs) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 311 | end; | 
| 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 | 312 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 313 | fun cnf_hyps_thms ctxt = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 314 | let val ths = ProofContext.prems_of ctxt | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 315 | in | 
| 18508 | 316 | ResClause.union_all (map ResAxioms.skolem_thm ths) | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 317 | end; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 318 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 319 | (**** clausification ****) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 320 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 321 | fun cls_axiom _ _ _ [] = [] | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 322 | | cls_axiom is_fol name i (tm::tms) = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 323 | if is_fol then | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 324 | (case ResClause.make_axiom_clause tm (name,i) of | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 325 | SOME cls => (FOLClause cls) :: cls_axiom true name (i+1) tms | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 326 | | NONE => cls_axiom true name i tms) | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 327 | else | 
| 19446 | 328 | HOLClause (ResHolClause.make_axiom_clause tm (name,i)) :: | 
| 329 | cls_axiom false name (i+1) tms; | |
| 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 | 330 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 331 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 332 | fun filtered_tptp_axiom is_fol name clss = | 
| 19446 | 333 | (fst | 
| 334 | (ListPair.unzip | |
| 335 | (map clause2tptp (filter (fn c => not (isTaut c)) (cls_axiom is_fol name 0 clss)))), | |
| 336 | []) handle _ => ([],[name]); | |
| 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 | 337 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 338 | fun tptp_axioms_aux _ [] err = ([],err) | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 339 | | tptp_axioms_aux is_fol ((name,clss)::nclss) err = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 340 | let val (nclss1,err1) = tptp_axioms_aux is_fol nclss err | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 341 | val (clsstrs,err_name_list) = filtered_tptp_axiom is_fol name clss | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 342 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 343 | case clsstrs of [] => (nclss1,err_name_list @ err1) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 344 | | _ => (clsstrs::nclss1,err1) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 345 | end; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 346 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 347 | fun tptp_axioms is_fol rules = tptp_axioms_aux is_fol rules []; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 348 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 349 | fun atp_axioms is_fol rules file = | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 350 | let val out = TextIO.openOut file | 
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 351 | val (clss,errs) = tptp_axioms is_fol rules | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 352 | val clss' = ResClause.union_all clss | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 353 | in | 
| 18863 | 354 | ResClause.writeln_strs out clss'; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 355 | TextIO.closeOut out; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 356 | ([file],errs) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 357 | end; | 
| 18001 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 358 | |
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 359 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 360 | fun filtered_tptp_conjectures is_fol terms = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 361 | let val clss = make_conjecture_clauses is_fol terms | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 362 | val clss' = filter (fn c => not (isTaut c)) clss | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 363 | in | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 364 | ListPair.unzip (map clause2tptp clss') | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 365 | end; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 366 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 367 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 368 | fun atp_conjectures_h is_fol hyp_cls = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 369 | let val (tptp_h_clss,tfree_litss) = filtered_tptp_conjectures is_fol hyp_cls | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 370 | val tfree_lits = ResClause.union_all tfree_litss | 
| 18863 | 371 | val tfree_clss = map ResClause.tptp_tfree_clause tfree_lits | 
| 18401 | 372 | val hypsfile = hyps_file () | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 373 | val out = TextIO.openOut(hypsfile) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 374 | in | 
| 18863 | 375 | ResClause.writeln_strs out (tfree_clss @ tptp_h_clss); | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 376 | TextIO.closeOut out; warning hypsfile; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 377 | ([hypsfile],tfree_lits) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 378 | end; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 379 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 380 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 381 | fun atp_conjectures_c is_fol conj_cls n tfrees = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 382 | let val (tptp_c_clss,tfree_litss) = filtered_tptp_conjectures is_fol conj_cls | 
| 18863 | 383 | val tfree_clss = map ResClause.tptp_tfree_clause ((ResClause.union_all tfree_litss) \\ tfrees) | 
| 18401 | 384 | val probfile = prob_file n | 
| 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 | 385 | 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 | 386 | in | 
| 18863 | 387 | ResClause.writeln_strs out (tfree_clss @ tptp_c_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 | 388 | TextIO.closeOut out; | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 389 | warning probfile; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 390 | probfile | 
| 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 | 391 | 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 | 392 | |
| 18001 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 393 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 394 | fun atp_conjectures is_fol [] conj_cls n = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 395 | let val probfile = atp_conjectures_c is_fol conj_cls n [] | 
| 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 | 396 | in | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 397 | [probfile] | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 398 | end | 
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 399 | | atp_conjectures is_fol hyp_cls conj_cls n = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 400 | let val (hypsfile,tfree_lits) = atp_conjectures_h is_fol hyp_cls | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 401 | val probfile = atp_conjectures_c is_fol conj_cls n tfree_lits | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 402 | in | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 403 | (probfile::hypsfile) | 
| 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 | 404 | 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 | 405 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 406 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 407 | (**** types and sorts ****) | 
| 18001 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 408 | fun tptp_types_sorts thy = | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 409 | let val classrel_clauses = ResClause.classrel_clauses_thy thy | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 410 | val arity_clauses = ResClause.arity_clause_thy thy | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 411 | val classrel_cls = map ResClause.tptp_classrelClause classrel_clauses | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 412 | val arity_cls = map ResClause.tptp_arity_clause arity_clauses | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 413 | fun write_ts () = | 
| 18401 | 414 | let val tsfile = types_sorts_file () | 
| 18001 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 415 | val out = TextIO.openOut(tsfile) | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 416 | in | 
| 18863 | 417 | ResClause.writeln_strs out (classrel_cls @ arity_cls); | 
| 18001 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 418 | TextIO.closeOut out; | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 419 | [tsfile] | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 420 | end | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 421 | in | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 422 | if (List.null arity_cls andalso List.null classrel_cls) then [] | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 423 | else | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 424 | write_ts () | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 425 | end; | 
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 426 | |
| 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 427 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 428 | (******* write to files ******) | 
| 18001 
6ca14bec7cd5
Added new functions to handle HOL goals and lemmas.
 mengj parents: 
17939diff
changeset | 429 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 430 | datatype mode = Auto | Fol | Hol; | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 431 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 432 | fun write_out logic (claR,simpR,userR,hyp_cls,conj_cls,n,err) = | 
| 19446 | 433 | let val is_fol = is_fol_logic logic | 
| 434 | val (files1,err1) = if (null claR) then ([],[]) | |
| 435 | else (atp_axioms is_fol claR (claset_file())) | |
| 436 | val (files2,err2) = if (null simpR) then ([],[]) | |
| 437 | else (atp_axioms is_fol simpR (simpset_file ())) | |
| 438 | val (files3,err3) = if (null userR) then ([],[]) | |
| 439 | else (atp_axioms is_fol userR (local_lemma_file ())) | |
| 440 | val files4 = atp_conjectures is_fol hyp_cls conj_cls n | |
| 441 | val errs = err1 @ err2 @ err3 @ err | |
| 442 | val logic' = if !include_combS then HOLCS | |
| 443 | else | |
| 444 | if !include_min_comb then HOLC else logic | |
| 445 |       val _ = warning ("Problems are " ^ (string_of_logic logic'))
 | |
| 446 |       val _ = if (null errs) then () else warning ("Can't clausify thms: " ^ (ResClause.paren_pack errs))
 | |
| 447 | val helpers = case logic' of FOL => [] | |
| 448 | | HOL => [HOL_helper1 ()] | |
| 449 | | _ => [HOL_helper1(),HOL_comb()] (*HOLC or HOLCS*) | |
| 450 | in | |
| 451 | (helpers,files4 @ files1 @ files2 @ files3) | |
| 452 | end; | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 453 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 454 | |
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 455 | fun write_out_ts is_fol ctxt (claR,simpR,userR,hyp_cls,conj_cls,n,err) = | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 456 | let val ts_file = if ((is_fol andalso (!fol_keep_types)) orelse ((not is_fol) andalso (is_typed_hol ()))) then tptp_types_sorts (ProofContext.theory_of ctxt) else [] | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 457 | val logic = if is_fol then FOL else HOL | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 458 | val (helpers,files) = write_out logic (claR,simpR,userR,hyp_cls,conj_cls,n,err) | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 459 | in | 
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 460 | (helpers,files) | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 461 | end; | 
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 462 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 463 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 464 | fun prep_atp_input mode ctxt conjectures user_thms n = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 465 | let val conj_cls = map prop_of (make_clauses conjectures) | 
| 19446 | 466 | val (userR,simpR,claR,errs) = | 
| 467 | cnf_rules_tms ctxt user_thms (!include_claset,!include_simpset) | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 468 | val hyp_cls = map prop_of (cnf_hyps_thms ctxt) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 469 | val logic = case mode of Auto => problem_logic (conj_cls,hyp_cls,userR,claR,simpR) | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 470 | | Fol => FOL | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 471 | | Hol => HOL | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 472 | in | 
| 19160 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 473 | case logic of FOL => write_out_ts true ctxt (claR,simpR,userR,hyp_cls,conj_cls,n,errs) | 
| 
c1b3aa0a6827
Merged HOL and FOL clauses and combined some functions.
 mengj parents: 
18920diff
changeset | 474 | | _ => write_out_ts false ctxt (claR,simpR,userR,hyp_cls,conj_cls,n,errs) | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 475 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 476 | end; | 
| 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 | 477 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 478 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 479 | (***************************************************************) | 
| 18086 
051b7f323b4c
Changed the way additional lemmas are passed to ATP methods for proof of a goal: now only list them after the methods' names.
 mengj parents: 
18014diff
changeset | 480 | (* setup ATPs as Isabelle methods *) | 
| 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 | 481 | (***************************************************************) | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 482 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 483 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 484 | fun atp_meth' tac ths ctxt = | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 485 | Method.SIMPLE_METHOD' HEADGOAL | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 486 | (tac ctxt ths); | 
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 487 | |
| 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 488 | fun atp_meth tac ths ctxt = | 
| 18357 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 489 | let val thy = ProofContext.theory_of ctxt | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 490 | val _ = ResClause.init thy | 
| 
c5030cdbf8da
Added more functions for new type embedding of HOL clauses.
 mengj parents: 
18273diff
changeset | 491 | val _ = ResHolClause.init thy | 
| 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 | 492 | in | 
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 493 | atp_meth' tac ths ctxt | 
| 18197 
082a2bd6f655
-- added combinator reduction axioms (typed and untyped) for HOL goals.
 mengj parents: 
18141diff
changeset | 494 | end; | 
| 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 | 495 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 496 | |
| 18273 
e15a825da262
Added in four control flags for HOL and FOL translations.
 mengj parents: 
18197diff
changeset | 497 | fun atp_method tac = Method.thms_ctxt_args (atp_meth 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 | 498 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 499 | |
| 
1574533861b1
Added files in order to use external ATPs as oracles and invoke these ATPs by calling Isabelle methods (currently "vampire" and "eprover").
 mengj parents: diff
changeset | 500 | (*************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 | 501 | 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 | 502 | | 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 | 503 | (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 | 504 | |
| 17939 
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
 mengj parents: 
17907diff
changeset | 505 | fun cond_rm_tmp files = | 
| 
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
 mengj parents: 
17907diff
changeset | 506 | if !keep_atp_input then warning "ATP input kept..." | 
| 18401 | 507 |     else if !ResAtp.destdir <> "" then warning ("ATP input kept in directory " ^ (!ResAtp.destdir))
 | 
| 17939 
3925ab7b8a18
Merged theory ResAtpOracle.thy into ResAtpMethods.thy
 mengj parents: 
17907diff
changeset | 508 | 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 | 509 | |
| 17907 | 510 | end |