src/HOL/Tools/ATP/atp_systems.ML
changeset 43056 7a43449ffd86
parent 43050 59284a13abc4
child 43060 e998e85e41ff
equal deleted inserted replaced
43055:6e0cb8044734 43056:7a43449ffd86
   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"),