src/HOL/Tools/ATP/atp_systems.ML
changeset 70939 3218999b3715
parent 70938 6d84c3c333d5
child 70940 ce3a05ad07b7
equal deleted inserted replaced
70938:6d84c3c333d5 70939:3218999b3715
   259     \1.5,1.5,1),1*Clauseweight(PreferProcessed,1,1,1),1*\
   259     \1.5,1.5,1),1*Clauseweight(PreferProcessed,1,1,1),1*\
   260     \FIFOWeight(PreferProcessed))' "
   260     \FIFOWeight(PreferProcessed))' "
   261   else
   261   else
   262     "-xAuto "
   262     "-xAuto "
   263 
   263 
   264 val e_ord_weights =
   264 val e_ord_weights = map (fn (s, w) => s ^ ":" ^ string_of_int w) #> space_implode ","
   265   map (fn (s, w) => s ^ ":" ^ string_of_int w) #> space_implode ","
       
   266 fun e_ord_precedence [_] = ""
   265 fun e_ord_precedence [_] = ""
   267   | e_ord_precedence info = info |> map fst |> space_implode "<"
   266   | e_ord_precedence info = info |> map fst |> space_implode "<"
   268 
   267 
   269 fun e_term_order_info_arguments false false _ = ""
   268 fun e_term_order_info_arguments false false _ = ""
   270   | e_term_order_info_arguments gen_weights gen_prec ord_info =
   269   | e_term_order_info_arguments gen_weights gen_prec ord_info =
   291      [(TimedOut, "Failure: Resource limit exceeded (time)"),
   290      [(TimedOut, "Failure: Resource limit exceeded (time)"),
   292       (TimedOut, "time limit exceeded")] @
   291       (TimedOut, "time limit exceeded")] @
   293      known_szs_status_failures,
   292      known_szs_status_failures,
   294    prem_role = Conjecture,
   293    prem_role = Conjecture,
   295    best_slices = fn ctxt =>
   294    best_slices = fn ctxt =>
   296      let val heuristic = Config.get ctxt e_selection_heuristic in
   295      let
       
   296        val heuristic = Config.get ctxt e_selection_heuristic
       
   297        val ehoh = string_ord (getenv "E_VERSION", "2.3") <> LESS
       
   298        val (format, enc) =
       
   299          if ehoh then (THF (Monomorphic, THF_Predicate_Free), "mono_native_higher")
       
   300          else (TFF Monomorphic, "mono_native")
       
   301      in
   297        (* FUDGE *)
   302        (* FUDGE *)
   298        if heuristic = e_smartN then
   303        if heuristic = e_smartN then
   299          [(0.15, (((128, meshN), TFF Monomorphic, "mono_native", combsN, false), e_fun_weightN)),
   304          [(0.15, (((128, meshN), format, enc, combsN, false), e_fun_weightN)),
   300           (0.15, (((128, mashN), TFF Monomorphic, "mono_native", combsN, false), e_sym_offset_weightN)),
   305           (0.15, (((128, mashN), format, enc, combsN, false), e_sym_offset_weightN)),
   301           (0.15, (((91, mepoN), TFF Monomorphic, "mono_native", combsN, false), e_autoN)),
   306           (0.15, (((91, mepoN), format, enc, combsN, false), e_autoN)),
   302           (0.15, (((1000, meshN), TFF Monomorphic, "poly_guards??", combsN, false), e_sym_offset_weightN)),
   307           (0.15, (((1000, meshN), format, "poly_guards??", combsN, false), e_sym_offset_weightN)),
   303           (0.15, (((256, mepoN), TFF Monomorphic, "mono_native", liftingN, false), e_fun_weightN)),
   308           (0.15, (((256, mepoN), format, enc, liftingN, false), e_fun_weightN)),
   304           (0.25, (((64, mashN), TFF Monomorphic, "mono_native", combsN, false), e_fun_weightN))]
   309           (0.25, (((64, mashN), format, enc, combsN, false), e_fun_weightN))]
   305        else
   310        else
   306          [(1.0, (((500, ""), TFF Monomorphic, "mono_native", combsN, false), heuristic))]
   311          [(1.0, (((500, ""), format, enc, combsN, false), heuristic))]
   307      end,
   312      end,
   308    best_max_mono_iters = default_max_mono_iters,
   313    best_max_mono_iters = default_max_mono_iters,
   309    best_max_new_mono_instances = default_max_new_mono_instances}
   314    best_max_new_mono_instances = default_max_new_mono_instances}
   310 
   315 
   311 val e = (eN, fn () => e_config)
   316 val e = (eN, fn () => e_config)
   328         (0.25, (((1000, meshN), FOF, "poly_guards??", combsN, false), ""))],
   333         (0.25, (((1000, meshN), FOF, "poly_guards??", combsN, false), ""))],
   329    best_max_mono_iters = default_max_mono_iters,
   334    best_max_mono_iters = default_max_mono_iters,
   330    best_max_new_mono_instances = default_max_new_mono_instances}
   335    best_max_new_mono_instances = default_max_new_mono_instances}
   331 
   336 
   332 val e_par = (e_parN, fn () => e_par_config)
   337 val e_par = (e_parN, fn () => e_par_config)
   333 
       
   334 
       
   335 (* Ehoh *)
       
   336 
       
   337 val ehoh_config : atp_config =
       
   338   {exec = fn _ => (["E_HOME"], ["eprover"]),
       
   339    arguments = fn _ => fn _ => fn _ => fn timeout => fn file_name => fn _ =>
       
   340      "--auto-schedule --tstp-in --tstp-out --silent --cpu-limit=" ^
       
   341      string_of_int (to_secs 2 timeout) ^ " --proof-object=1 " ^ file_name,
       
   342    proof_delims =
       
   343      [("# SZS output start CNFRefutation", "# SZS output end CNFRefutation")] @
       
   344      tstp_proof_delims,
       
   345    known_failures =
       
   346      [(TimedOut, "Failure: Resource limit exceeded (time)"),
       
   347       (TimedOut, "time limit exceeded")] @
       
   348      known_szs_status_failures,
       
   349    prem_role = Hypothesis,
       
   350    best_slices =
       
   351      (* FUDGE *)
       
   352      K [(1.0, (((500, ""), THF (Monomorphic, THF_Predicate_Free), "mono_native_higher", liftingN, false), ""))],
       
   353    best_max_mono_iters = default_max_mono_iters,
       
   354    best_max_new_mono_instances = default_max_new_mono_instances}
       
   355 
       
   356 val ehoh = (ehohN, fn () => ehoh_config)
       
   357 
   338 
   358 
   339 
   359 (* iProver *)
   340 (* iProver *)
   360 
   341 
   361 val iprover_config : atp_config =
   342 val iprover_config : atp_config =
   752          gen_prec = String.isSubstring xprecN ord, gen_simp = String.isSubstring xsimpN ord}
   733          gen_prec = String.isSubstring xprecN ord, gen_simp = String.isSubstring xsimpN ord}
   753       end
   734       end
   754   end
   735   end
   755 
   736 
   756 val atps =
   737 val atps =
   757   [agsyhol, alt_ergo, e, e_par, ehoh, iprover, leo2, leo3, satallax, spass, vampire, z3_tptp,
   738   [agsyhol, alt_ergo, e, e_par, iprover, leo2, leo3, satallax, spass, vampire, z3_tptp,
   758    zipperposition, remote_agsyhol, remote_alt_ergo, remote_e, remote_iprover, remote_leo2,
   739    zipperposition, remote_agsyhol, remote_alt_ergo, remote_e, remote_iprover, remote_leo2,
   759    remote_leo3, remote_vampire, remote_snark, remote_pirate, remote_waldmeister]
   740    remote_leo3, remote_vampire, remote_snark, remote_pirate, remote_waldmeister]
   760 
   741 
   761 val _ = Theory.setup (fold add_atp atps)
   742 val _ = Theory.setup (fold add_atp atps)
   762 
   743