115 val extend = I |
115 val extend = I |
116 fun merge data : T = Symtab.merge (eq_snd op =) data |
116 fun merge data : T = Symtab.merge (eq_snd op =) data |
117 handle Symtab.DUP name => error ("Duplicate ATP: " ^ quote name ^ ".") |
117 handle Symtab.DUP name => error ("Duplicate ATP: " ^ quote name ^ ".") |
118 ) |
118 ) |
119 |
119 |
120 fun to_secs bonus time = (Time.toMilliseconds time + bonus + 999) div 1000 |
120 fun to_secs time = (Time.toMilliseconds time + 999) div 1000 |
121 |
121 |
122 |
122 |
123 (* E *) |
123 (* E *) |
124 |
|
125 (* Give E an extra second to reconstruct the proof. Older versions even get two |
|
126 seconds, because the "eproof" script wrongly subtracted an entire second to |
|
127 account for the overhead of the script itself, which is in fact much |
|
128 lower. *) |
|
129 fun e_bonus () = |
|
130 if string_ord (getenv "E_VERSION", "1.1") = LESS then 2000 else 1000 |
|
131 |
124 |
132 val tstp_proof_delims = |
125 val tstp_proof_delims = |
133 [("# SZS output start CNFRefutation.", "# SZS output end CNFRefutation"), |
126 [("# SZS output start CNFRefutation.", "# SZS output end CNFRefutation"), |
134 ("% SZS output start CNFRefutation", "% SZS output end CNFRefutation")] |
127 ("% SZS output start CNFRefutation", "% SZS output end CNFRefutation")] |
135 |
128 |
208 {exec = ("E_HOME", "eproof"), |
201 {exec = ("E_HOME", "eproof"), |
209 required_execs = [], |
202 required_execs = [], |
210 arguments = fn ctxt => fn slice => fn timeout => fn weights => |
203 arguments = fn ctxt => fn slice => fn timeout => fn weights => |
211 "--tstp-in --tstp-out -l5 " ^ |
204 "--tstp-in --tstp-out -l5 " ^ |
212 e_weight_arguments ctxt (method_for_slice ctxt slice) weights ^ |
205 e_weight_arguments ctxt (method_for_slice ctxt slice) weights ^ |
213 " -tAutoDev --silent --cpu-limit=" ^ |
206 " -tAutoDev --silent --cpu-limit=" ^ string_of_int (to_secs timeout), |
214 string_of_int (to_secs (e_bonus ()) timeout), |
|
215 proof_delims = tstp_proof_delims, |
207 proof_delims = tstp_proof_delims, |
216 known_failures = |
208 known_failures = |
217 [(Unprovable, "SZS status: CounterSatisfiable"), |
209 [(Unprovable, "SZS status: CounterSatisfiable"), |
218 (Unprovable, "SZS status CounterSatisfiable"), |
210 (Unprovable, "SZS status CounterSatisfiable"), |
219 (ProofMissing, "SZS status Theorem"), |
211 (ProofMissing, "SZS status Theorem"), |
249 val spass_config : atp_config = |
241 val spass_config : atp_config = |
250 {exec = ("ISABELLE_ATP", "scripts/spass"), |
242 {exec = ("ISABELLE_ATP", "scripts/spass"), |
251 required_execs = [("SPASS_HOME", "SPASS"), ("SPASS_HOME", "tptp2dfg")], |
243 required_execs = [("SPASS_HOME", "SPASS"), ("SPASS_HOME", "tptp2dfg")], |
252 arguments = fn ctxt => fn slice => fn timeout => fn _ => |
244 arguments = fn ctxt => fn slice => fn timeout => fn _ => |
253 ("-Auto -PGiven=0 -PProblem=0 -Splits=0 -FullRed=0 -DocProof \ |
245 ("-Auto -PGiven=0 -PProblem=0 -Splits=0 -FullRed=0 -DocProof \ |
254 \-VarWeight=3 -TimeLimit=" ^ string_of_int (to_secs 0 timeout)) |
246 \-VarWeight=3 -TimeLimit=" ^ string_of_int (to_secs timeout)) |
255 |> (slice < 2 orelse Config.get ctxt spass_force_sos) ? prefix "-SOS=1 ", |
247 |> (slice < 2 orelse Config.get ctxt spass_force_sos) ? prefix "-SOS=1 ", |
256 proof_delims = [("Here is a proof", "Formulae used in the proof")], |
248 proof_delims = [("Here is a proof", "Formulae used in the proof")], |
257 known_failures = |
249 known_failures = |
258 known_perl_failures @ |
250 known_perl_failures @ |
259 [(GaveUp, "SPASS beiseite: Completion found"), |
251 [(GaveUp, "SPASS beiseite: Completion found"), |
284 |
276 |
285 val vampire_config : atp_config = |
277 val vampire_config : atp_config = |
286 {exec = ("VAMPIRE_HOME", "vampire"), |
278 {exec = ("VAMPIRE_HOME", "vampire"), |
287 required_execs = [], |
279 required_execs = [], |
288 arguments = fn ctxt => fn slice => fn timeout => fn _ => |
280 arguments = fn ctxt => fn slice => fn timeout => fn _ => |
289 "--proof tptp --mode casc -t " ^ string_of_int (to_secs 0 timeout) ^ |
281 "--proof tptp --mode casc -t " ^ string_of_int (to_secs timeout) ^ |
290 " --thanks \"Andrei and Krystof\" --input_file" |
282 " --thanks \"Andrei and Krystof\" --input_file" |
291 |> (slice < 2 orelse Config.get ctxt vampire_force_sos) |
283 |> (slice < 2 orelse Config.get ctxt vampire_force_sos) |
292 ? prefix "--sos on ", |
284 ? prefix "--sos on ", |
293 proof_delims = |
285 proof_delims = |
294 [("=========== Refutation ==========", |
286 [("=========== Refutation ==========", |
323 |
315 |
324 val z3_atp_config : atp_config = |
316 val z3_atp_config : atp_config = |
325 {exec = ("Z3_HOME", "z3"), |
317 {exec = ("Z3_HOME", "z3"), |
326 required_execs = [], |
318 required_execs = [], |
327 arguments = fn _ => fn _ => fn timeout => fn _ => |
319 arguments = fn _ => fn _ => fn timeout => fn _ => |
328 "MBQI=true -p -t:" ^ string_of_int (to_secs 0 timeout), |
320 "MBQI=true -p -t:" ^ string_of_int (to_secs timeout), |
329 proof_delims = [], |
321 proof_delims = [], |
330 known_failures = |
322 known_failures = |
331 [(Unprovable, "\nsat"), |
323 [(Unprovable, "\nsat"), |
332 (GaveUp, "\nunknown"), |
324 (GaveUp, "\nunknown"), |
333 (GaveUp, "SZS status Satisfiable"), |
325 (GaveUp, "SZS status Satisfiable"), |
380 fun remote_config system_name system_versions proof_delims known_failures |
372 fun remote_config system_name system_versions proof_delims known_failures |
381 conj_sym_kind prem_kind formats best_slice : atp_config = |
373 conj_sym_kind prem_kind formats best_slice : atp_config = |
382 {exec = ("ISABELLE_ATP", "scripts/remote_atp"), |
374 {exec = ("ISABELLE_ATP", "scripts/remote_atp"), |
383 required_execs = [], |
375 required_execs = [], |
384 arguments = fn _ => fn _ => fn timeout => fn _ => |
376 arguments = fn _ => fn _ => fn timeout => fn _ => |
385 "-t " ^ string_of_int (Int.min (max_remote_secs, (to_secs 0 timeout))) |
377 "-t " ^ string_of_int (Int.min (max_remote_secs, to_secs timeout)) |
386 ^ " -s " ^ the_system system_name system_versions, |
378 ^ " -s " ^ the_system system_name system_versions, |
387 proof_delims = union (op =) tstp_proof_delims proof_delims, |
379 proof_delims = union (op =) tstp_proof_delims proof_delims, |
388 known_failures = known_failures @ known_perl_failures @ |
380 known_failures = known_failures @ known_perl_failures @ |
389 [(Unprovable, "says Satisfiable"), |
381 [(Unprovable, "says Satisfiable"), |
390 (Unprovable, "says CounterSatisfiable"), |
382 (Unprovable, "says CounterSatisfiable"), |