src/HOL/Tools/Sledgehammer/sledgehammer_atp_systems.ML
changeset 75026 b61949cba32a
parent 75025 f741d55a81e5
child 75028 b49329185b82
equal deleted inserted replaced
75025:f741d55a81e5 75026:b61949cba32a
    10   type term_order = ATP_Problem.term_order
    10   type term_order = ATP_Problem.term_order
    11   type atp_format = ATP_Problem.atp_format
    11   type atp_format = ATP_Problem.atp_format
    12   type atp_formula_role = ATP_Problem.atp_formula_role
    12   type atp_formula_role = ATP_Problem.atp_formula_role
    13   type atp_failure = ATP_Proof.atp_failure
    13   type atp_failure = ATP_Proof.atp_failure
    14 
    14 
    15   type atp_slice = (int * string) * atp_format * string * string * bool * string
    15   type base_slice = int * string
       
    16   type atp_slice = atp_format * string * string * bool * string
    16   type atp_config =
    17   type atp_config =
    17     {exec : string list * string list,
    18     {exec : string list * string list,
    18      arguments : Proof.context -> bool -> string -> Time.time -> Path.T ->
    19      arguments : Proof.context -> bool -> string -> Time.time -> Path.T ->
    19        term_order * (unit -> (string * int) list) * (unit -> (string * real) list) -> string list,
    20        term_order * (unit -> (string * int) list) * (unit -> (string * real) list) -> string list,
    20      proof_delims : (string * string) list,
    21      proof_delims : (string * string) list,
    21      known_failures : (atp_failure * string) list,
    22      known_failures : (atp_failure * string) list,
    22      prem_role : atp_formula_role,
    23      prem_role : atp_formula_role,
    23      best_slices : Proof.context -> atp_slice list,
    24      good_slices : Proof.context -> (base_slice * atp_slice) list,
    24      best_max_mono_iters : int,
    25      good_max_mono_iters : int,
    25      best_max_new_mono_instances : int}
    26      good_max_new_mono_instances : int}
    26 
    27 
    27   val default_max_mono_iters : int
    28   val default_max_mono_iters : int
    28   val default_max_new_mono_instances : int
    29   val default_max_new_mono_instances : int
    29   val term_order : string Config.T
    30   val term_order : string Config.T
    30   val e_smartN : string
    31   val e_smartN : string
    44   val spass_H2NuVS0 : string
    45   val spass_H2NuVS0 : string
    45   val spass_H2NuVS0Red2 : string
    46   val spass_H2NuVS0Red2 : string
    46   val spass_H2SOS : string
    47   val spass_H2SOS : string
    47   val isabelle_scala_function: string list * string list
    48   val isabelle_scala_function: string list * string list
    48   val remote_atp : string -> string -> string list -> (string * string) list ->
    49   val remote_atp : string -> string -> string list -> (string * string) list ->
    49     (atp_failure * string) list -> atp_formula_role -> (Proof.context -> atp_slice) ->
    50     (atp_failure * string) list -> atp_formula_role -> (Proof.context -> base_slice * atp_slice) ->
    50     string * (unit -> atp_config)
    51     string * (unit -> atp_config)
    51   val add_atp : string * (unit -> atp_config) -> theory -> theory
    52   val add_atp : string * (unit -> atp_config) -> theory -> theory
    52   val get_atp : theory -> string -> (unit -> atp_config)
    53   val get_atp : theory -> string -> (unit -> atp_config)
    53   val supported_atps : theory -> string list
    54   val supported_atps : theory -> string list
    54   val is_atp_installed : theory -> string -> bool
    55   val is_atp_installed : theory -> string -> bool
    74 val TH1 = THF (Polymorphic, {with_ite = true, with_let = true}, THF_With_Choice)
    75 val TH1 = THF (Polymorphic, {with_ite = true, with_let = true}, THF_With_Choice)
    75 
    76 
    76 val default_max_mono_iters = 3 (* FUDGE *)
    77 val default_max_mono_iters = 3 (* FUDGE *)
    77 val default_max_new_mono_instances = 100 (* FUDGE *)
    78 val default_max_new_mono_instances = 100 (* FUDGE *)
    78 
    79 
    79 type atp_slice = (int * string) * atp_format * string * string * bool * string
    80 type base_slice = int * string
       
    81 type atp_slice = atp_format * string * string * bool * string
    80 
    82 
    81 type atp_config =
    83 type atp_config =
    82   {exec : string list * string list,
    84   {exec : string list * string list,
    83    arguments : Proof.context -> bool -> string -> Time.time -> Path.T ->
    85    arguments : Proof.context -> bool -> string -> Time.time -> Path.T ->
    84      term_order * (unit -> (string * int) list) * (unit -> (string * real) list) -> string list,
    86      term_order * (unit -> (string * int) list) * (unit -> (string * real) list) -> string list,
    85    proof_delims : (string * string) list,
    87    proof_delims : (string * string) list,
    86    known_failures : (atp_failure * string) list,
    88    known_failures : (atp_failure * string) list,
    87    prem_role : atp_formula_role,
    89    prem_role : atp_formula_role,
    88    best_slices : Proof.context -> atp_slice list,
    90    good_slices : Proof.context -> (base_slice * atp_slice) list,
    89    best_max_mono_iters : int,
    91    good_max_mono_iters : int,
    90    best_max_new_mono_instances : int}
    92    good_max_new_mono_instances : int}
    91 
    93 
    92 (* "best_slices" must be found empirically, taking a holistic approach since the
    94 (* "good_slices" must be found empirically, taking a holistic approach since the
    93    ATPs are run in parallel. Each slice has the format
    95    ATPs are run in parallel. Each slice has the format
    94 
    96 
    95      (time_frac, ((max_facts, fact_filter), format, type_enc,
    97      (time_frac, ((max_facts, fact_filter), format, type_enc,
    96                   lam_trans, uncurried_aliases), extra)
    98                   lam_trans, uncurried_aliases), extra)
    97 
    99 
   166    arguments = fn _ => fn _ => fn _ => fn timeout => fn problem => fn _ =>
   168    arguments = fn _ => fn _ => fn _ => fn timeout => fn problem => fn _ =>
   167      ["--proof --time-out " ^ string_of_int (to_secs 1 timeout) ^ " " ^ File.bash_path problem],
   169      ["--proof --time-out " ^ string_of_int (to_secs 1 timeout) ^ " " ^ File.bash_path problem],
   168    proof_delims = tstp_proof_delims,
   170    proof_delims = tstp_proof_delims,
   169    known_failures = known_szs_status_failures,
   171    known_failures = known_szs_status_failures,
   170    prem_role = Hypothesis,
   172    prem_role = Hypothesis,
   171    best_slices =
   173    good_slices =
   172      (* FUDGE *)
   174      (* FUDGE *)
   173      K [((60, meshN), THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "")],
   175      K [((60, meshN), (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, ""))],
   174    best_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   176    good_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   175    best_max_new_mono_instances = default_max_new_mono_instances}
   177    good_max_new_mono_instances = default_max_new_mono_instances}
   176 
   178 
   177 val agsyhol = (agsyholN, fn () => agsyhol_config)
   179 val agsyhol = (agsyholN, fn () => agsyhol_config)
   178 
   180 
   179 
   181 
   180 (* Alt-Ergo *)
   182 (* Alt-Ergo *)
   188    known_failures =
   190    known_failures =
   189      [(ProofMissing, ": Valid"),
   191      [(ProofMissing, ": Valid"),
   190       (TimedOut, ": Timeout"),
   192       (TimedOut, ": Timeout"),
   191       (GaveUp, ": Unknown")],
   193       (GaveUp, ": Unknown")],
   192    prem_role = Hypothesis,
   194    prem_role = Hypothesis,
   193    best_slices = fn _ =>
   195    good_slices =
   194      (* FUDGE *)
   196      (* FUDGE *)
   195      [((100, meshN), TF1, "poly_native", liftingN, false, "")],
   197      K [((100, meshN), (TF1, "poly_native", liftingN, false, ""))],
   196    best_max_mono_iters = default_max_mono_iters,
   198    good_max_mono_iters = default_max_mono_iters,
   197    best_max_new_mono_instances = default_max_new_mono_instances}
   199    good_max_new_mono_instances = default_max_new_mono_instances}
   198 
   200 
   199 val alt_ergo = (alt_ergoN, fn () => alt_ergo_config)
   201 val alt_ergo = (alt_ergoN, fn () => alt_ergo_config)
   200 
   202 
   201 
   203 
   202 (* E *)
   204 (* E *)
   285    known_failures =
   287    known_failures =
   286      [(TimedOut, "Failure: Resource limit exceeded (time)"),
   288      [(TimedOut, "Failure: Resource limit exceeded (time)"),
   287       (TimedOut, "time limit exceeded")] @
   289       (TimedOut, "time limit exceeded")] @
   288      known_szs_status_failures,
   290      known_szs_status_failures,
   289    prem_role = Conjecture,
   291    prem_role = Conjecture,
   290    best_slices = fn ctxt =>
   292    good_slices = fn ctxt =>
   291      let
   293      let
   292        val heuristic = Config.get ctxt e_selection_heuristic
   294        val heuristic = Config.get ctxt e_selection_heuristic
   293        val (format, enc, main_lam_trans) =
   295        val (format, enc, main_lam_trans) =
   294          if string_ord (getenv "E_VERSION", "2.7") <> LESS then
   296          if string_ord (getenv "E_VERSION", "2.7") <> LESS then
   295            (THF (Monomorphic, {with_ite = true, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN)
   297            (THF (Monomorphic, {with_ite = true, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN)
   298          else
   300          else
   299            (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Lambda_Free), "mono_native_higher", combsN)
   301            (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Lambda_Free), "mono_native_higher", combsN)
   300      in
   302      in
   301        (* FUDGE *)
   303        (* FUDGE *)
   302        if heuristic = e_smartN then
   304        if heuristic = e_smartN then
   303          [((128, meshN), format, enc, main_lam_trans, false, e_fun_weightN),
   305          [((128, meshN), (format, enc, main_lam_trans, false, e_fun_weightN)),
   304           ((128, mashN), format, enc, main_lam_trans, false, e_sym_offset_weightN),
   306           ((128, mashN), (format, enc, main_lam_trans, false, e_sym_offset_weightN)),
   305           ((91, mepoN), format, enc, main_lam_trans, false, e_autoN),
   307           ((91, mepoN), (format, enc, main_lam_trans, false, e_autoN)),
   306           ((1000, meshN), format, "poly_guards??", main_lam_trans, false, e_sym_offset_weightN),
   308           ((1000, meshN), (format, "poly_guards??", main_lam_trans, false, e_sym_offset_weightN)),
   307           ((256, mepoN), format, enc, liftingN, false, e_fun_weightN),
   309           ((256, mepoN), (format, enc, liftingN, false, e_fun_weightN)),
   308           ((64, mashN), format, enc, combsN, false, e_fun_weightN)]
   310           ((64, mashN), (format, enc, combsN, false, e_fun_weightN))]
   309        else
   311        else
   310          [((500, meshN), format, enc, combsN, false, heuristic)]
   312          [((500, meshN), (format, enc, combsN, false, heuristic))]
   311      end,
   313      end,
   312    best_max_mono_iters = default_max_mono_iters,
   314    good_max_mono_iters = default_max_mono_iters,
   313    best_max_new_mono_instances = default_max_new_mono_instances}
   315    good_max_new_mono_instances = default_max_new_mono_instances}
   314 
   316 
   315 val e = (eN, fn () => e_config)
   317 val e = (eN, fn () => e_config)
   316 
   318 
   317 
   319 
   318 (* iProver *)
   320 (* iProver *)
   326    proof_delims = tstp_proof_delims,
   328    proof_delims = tstp_proof_delims,
   327    known_failures =
   329    known_failures =
   328      [(ProofIncomplete, "% SZS output start CNFRefutation")] @
   330      [(ProofIncomplete, "% SZS output start CNFRefutation")] @
   329      known_szs_status_failures,
   331      known_szs_status_failures,
   330    prem_role = Hypothesis,
   332    prem_role = Hypothesis,
   331    best_slices =
   333    good_slices =
   332      (* FUDGE *)
   334      (* FUDGE *)
   333      K [((150, meshN), FOF, "mono_guards??", liftingN, false, "")],
   335      K [((150, meshN), (FOF, "mono_guards??", liftingN, false, ""))],
   334    best_max_mono_iters = default_max_mono_iters,
   336    good_max_mono_iters = default_max_mono_iters,
   335    best_max_new_mono_instances = default_max_new_mono_instances}
   337    good_max_new_mono_instances = default_max_new_mono_instances}
   336 
   338 
   337 val iprover = (iproverN, fn () => iprover_config)
   339 val iprover = (iproverN, fn () => iprover_config)
   338 
   340 
   339 
   341 
   340 (* LEO-II *)
   342 (* LEO-II *)
   351    known_failures =
   353    known_failures =
   352      [(TimedOut, "CPU time limit exceeded, terminating"),
   354      [(TimedOut, "CPU time limit exceeded, terminating"),
   353       (GaveUp, "No.of.Axioms")] @
   355       (GaveUp, "No.of.Axioms")] @
   354      known_szs_status_failures,
   356      known_szs_status_failures,
   355    prem_role = Hypothesis,
   357    prem_role = Hypothesis,
   356    best_slices =
   358    good_slices =
   357      (* FUDGE *)
   359      (* FUDGE *)
   358      K [((40, meshN), THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "")],
   360      K [((40, meshN), (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, ""))],
   359    best_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   361    good_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   360    best_max_new_mono_instances = default_max_new_mono_instances}
   362    good_max_new_mono_instances = default_max_new_mono_instances}
   361 
   363 
   362 val leo2 = (leo2N, fn () => leo2_config)
   364 val leo2 = (leo2N, fn () => leo2_config)
   363 
   365 
   364 
   366 
   365 (* Leo-III *)
   367 (* Leo-III *)
   372       \-p -t " ^ string_of_int (to_secs 1 timeout) ^ " " ^
   374       \-p -t " ^ string_of_int (to_secs 1 timeout) ^ " " ^
   373       (if full_proofs then "--nleq --naeq " else "")],
   375       (if full_proofs then "--nleq --naeq " else "")],
   374    proof_delims = tstp_proof_delims,
   376    proof_delims = tstp_proof_delims,
   375    known_failures = known_szs_status_failures,
   377    known_failures = known_szs_status_failures,
   376    prem_role = Hypothesis,
   378    prem_role = Hypothesis,
   377    best_slices =
   379    good_slices =
   378      (* FUDGE *)
   380      (* FUDGE *)
   379      K [((512, meshN), TH1, "mono_native_higher", keep_lamsN, false, "")],
   381      K [((512, meshN), (TH1, "mono_native_higher", keep_lamsN, false, ""))],
   380    best_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   382    good_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   381    best_max_new_mono_instances = default_max_new_mono_instances}
   383    good_max_new_mono_instances = default_max_new_mono_instances}
   382 
   384 
   383 val leo3 = (leo3N, fn () => leo3_config)
   385 val leo3 = (leo3N, fn () => leo3_config)
   384 
   386 
   385 
   387 
   386 (* Satallax *)
   388 (* Satallax *)
   395       "-p tstp -t " ^ string_of_int (to_secs 1 timeout) ^ " " ^ File.bash_path problem],
   397       "-p tstp -t " ^ string_of_int (to_secs 1 timeout) ^ " " ^ File.bash_path problem],
   396    proof_delims =
   398    proof_delims =
   397      [("% SZS output start Proof", "% SZS output end Proof")],
   399      [("% SZS output start Proof", "% SZS output end Proof")],
   398    known_failures = known_szs_status_failures,
   400    known_failures = known_szs_status_failures,
   399    prem_role = Hypothesis,
   401    prem_role = Hypothesis,
   400    best_slices =
   402    good_slices =
   401      (* FUDGE *)
   403      (* FUDGE *)
   402      K [((150, meshN), THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "")],
   404      K [((150, meshN), (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, ""))],
   403    best_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   405    good_max_mono_iters = default_max_mono_iters - 1 (* FUDGE *),
   404    best_max_new_mono_instances = default_max_new_mono_instances}
   406    good_max_new_mono_instances = default_max_new_mono_instances}
   405 
   407 
   406 val satallax = (satallaxN, fn () => satallax_config)
   408 val satallax = (satallaxN, fn () => satallax_config)
   407 
   409 
   408 
   410 
   409 (* SPASS *)
   411 (* SPASS *)
   432         (MalformedInput, "Undefined symbol"),
   434         (MalformedInput, "Undefined symbol"),
   433         (MalformedInput, "Free Variable"),
   435         (MalformedInput, "Free Variable"),
   434         (Unprovable, "No formulae and clauses found in input file"),
   436         (Unprovable, "No formulae and clauses found in input file"),
   435         (InternalError, "Please report this error")],
   437         (InternalError, "Please report this error")],
   436      prem_role = Conjecture,
   438      prem_role = Conjecture,
   437      best_slices = fn _ =>
   439      good_slices =
   438        (* FUDGE *)
   440        (* FUDGE *)
   439        [((150, meshN), format, "mono_native", combsN, true, ""),
   441        K [((150, meshN), (format, "mono_native", combsN, true, "")),
   440         ((500, meshN), format, "mono_native", liftingN, true, spass_H2SOS),
   442         ((500, meshN), (format, "mono_native", liftingN, true, spass_H2SOS)),
   441         ((50, meshN), format,  "mono_native", liftingN, true, spass_H2LR0LT0),
   443         ((50, meshN), (format,  "mono_native", liftingN, true, spass_H2LR0LT0)),
   442         ((250, meshN), format, "mono_native", combsN, true, spass_H2NuVS0),
   444         ((250, meshN), (format, "mono_native", combsN, true, spass_H2NuVS0)),
   443         ((1000, mepoN), format, "mono_native", liftingN, true, spass_H1SOS),
   445         ((1000, mepoN), (format, "mono_native", liftingN, true, spass_H1SOS)),
   444         ((150, meshN), format, "poly_guards??", liftingN, false, spass_H2NuVS0Red2),
   446         ((150, meshN), (format, "poly_guards??", liftingN, false, spass_H2NuVS0Red2)),
   445         ((300, meshN), format, "mono_native", combsN, true, spass_H2SOS),
   447         ((300, meshN), (format, "mono_native", combsN, true, spass_H2SOS)),
   446         ((100, meshN), format, "mono_native", combs_and_liftingN, true, spass_H2)],
   448         ((100, meshN), (format, "mono_native", combs_and_liftingN, true, spass_H2))],
   447      best_max_mono_iters = default_max_mono_iters,
   449      good_max_mono_iters = default_max_mono_iters,
   448      best_max_new_mono_instances = default_max_new_mono_instances}
   450      good_max_new_mono_instances = default_max_new_mono_instances}
   449   end
   451   end
   450 
   452 
   451 val spass = (spassN, fn () => spass_config)
   453 val spass = (spassN, fn () => spass_config)
   452 
   454 
   453 
   455 
   478       (Unprovable, "Satisfiability detected"),
   480       (Unprovable, "Satisfiability detected"),
   479       (Unprovable, "Termination reason: Satisfiable"),
   481       (Unprovable, "Termination reason: Satisfiable"),
   480       (Interrupted, "Aborted by signal SIGINT")] @
   482       (Interrupted, "Aborted by signal SIGINT")] @
   481      known_szs_status_failures,
   483      known_szs_status_failures,
   482    prem_role = Hypothesis,
   484    prem_role = Hypothesis,
   483    best_slices = fn ctxt =>
   485    good_slices =
   484      (* FUDGE *)
   486      (* FUDGE *)
   485      [((500, meshN), TX1, "mono_native_fool", combs_or_liftingN, false, sosN),
   487      K [((500, meshN), (TX1, "mono_native_fool", combs_or_liftingN, false, sosN)),
   486       ((150, meshN), TX1, "poly_native_fool", combs_or_liftingN, false, sosN),
   488       ((150, meshN), (TX1, "poly_native_fool", combs_or_liftingN, false, sosN)),
   487       ((50, meshN), TX1, "mono_native_fool", combs_or_liftingN, false, no_sosN)],
   489       ((50, meshN), (TX1, "mono_native_fool", combs_or_liftingN, false, no_sosN))],
   488    best_max_mono_iters = default_max_mono_iters,
   490    good_max_mono_iters = default_max_mono_iters,
   489    best_max_new_mono_instances = 2 * default_max_new_mono_instances (* FUDGE *)}
   491    good_max_new_mono_instances = 2 * default_max_new_mono_instances (* FUDGE *)}
   490 
   492 
   491 val vampire = (vampireN, fn () => vampire_config)
   493 val vampire = (vampireN, fn () => vampire_config)
   492 
   494 
   493 
   495 
   494 (* Z3 with TPTP syntax (half experimental, half legacy) *)
   496 (* Z3 with TPTP syntax (half experimental, half legacy) *)
   498    arguments = fn _ => fn _ => fn _ => fn timeout => fn problem => fn _ =>
   500    arguments = fn _ => fn _ => fn _ => fn timeout => fn problem => fn _ =>
   499      ["-proof -t:" ^ string_of_int (to_secs 1 timeout) ^ " -file:" ^ File.bash_path problem],
   501      ["-proof -t:" ^ string_of_int (to_secs 1 timeout) ^ " -file:" ^ File.bash_path problem],
   500    proof_delims = [("SZS status Theorem", "")],
   502    proof_delims = [("SZS status Theorem", "")],
   501    known_failures = known_szs_status_failures,
   503    known_failures = known_szs_status_failures,
   502    prem_role = Hypothesis,
   504    prem_role = Hypothesis,
   503    best_slices =
   505    good_slices =
   504      (* FUDGE *)
   506      (* FUDGE *)
   505      K [((250, meshN), TF0, "mono_native", combsN, false, ""),
   507      K [((250, meshN), (TF0, "mono_native", combsN, false, "")),
   506         ((125, mepoN), TF0, "mono_native", combsN, false, ""),
   508       ((125, mepoN), (TF0, "mono_native", combsN, false, "")),
   507         ((62, mashN), TF0, "mono_native", combsN, false, ""),
   509       ((62, mashN), (TF0, "mono_native", combsN, false, "")),
   508         ((31, meshN), TF0, "mono_native", combsN, false, "")],
   510       ((31, meshN), (TF0, "mono_native", combsN, false, ""))],
   509    best_max_mono_iters = default_max_mono_iters,
   511    good_max_mono_iters = default_max_mono_iters,
   510    best_max_new_mono_instances = 2 * default_max_new_mono_instances (* FUDGE *)}
   512    good_max_new_mono_instances = 2 * default_max_new_mono_instances (* FUDGE *)}
   511 
   513 
   512 val z3_tptp = (z3_tptpN, fn () => z3_tptp_config)
   514 val z3_tptp = (z3_tptpN, fn () => z3_tptp_config)
   513 
   515 
   514 
   516 
   515 (* Zipperposition *)
   517 (* Zipperposition *)
   526      proof_delims = tstp_proof_delims,
   528      proof_delims = tstp_proof_delims,
   527      known_failures =
   529      known_failures =
   528        [(TimedOut, "SZS status ResourceOut")] @   (* odd way of timing out *)
   530        [(TimedOut, "SZS status ResourceOut")] @   (* odd way of timing out *)
   529        known_szs_status_failures,
   531        known_szs_status_failures,
   530      prem_role = Hypothesis,
   532      prem_role = Hypothesis,
   531      best_slices = fn _ =>
   533      good_slices =
   532        [((512, meshN), format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic --tptp-def-as-rewrite --rewrite-before-cnf=true --max-inferences=1 --ho-unif-max-depth=1 --ho-max-elims=0 --ho-max-app-projections=0 --ho-max-rigid-imitations=1 --ho-max-identifications=0 --boolean-reasoning=bool-hoist --bool-hoist-simpl=true --bool-select=LI --recognize-injectivity=true --ext-rules=ext-family --ext-rules-max-depth=1 --ho-choice-inst=true --ho-prim-enum=none --ho-elim-leibniz=0 --interpret-bool-funs=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --ho-unif-level=pragmatic-framework --select=bb+e-selection2 --post-cnf-lambda-lifting=true -q \"4|prefer-sos|pnrefined(2,1,1,1,2,2,2)\" -q \"6|prefer-processed|conjecture-relative-struct(1.5,3.5,2,3)\" -q \"1|const|fifo\" -q \"4|prefer-ground|orient-lmax(2,1,2,1,1)\" -q \"4|defer-sos|conjecture-relative-struct(1,5,2,3)\" --avatar=off --recognize-injectivity=true --ho-neg-ext=true --e-timeout=2 --ho-pattern-decider=true --ho-fixpoint-decider=true --e-max-derived=50 --ignore-orphans=true --e-auto=true --presaturate=true --e-call-point=0.1"),
   534        K [((512, meshN), (format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic --tptp-def-as-rewrite --rewrite-before-cnf=true --max-inferences=1 --ho-unif-max-depth=1 --ho-max-elims=0 --ho-max-app-projections=0 --ho-max-rigid-imitations=1 --ho-max-identifications=0 --boolean-reasoning=bool-hoist --bool-hoist-simpl=true --bool-select=LI --recognize-injectivity=true --ext-rules=ext-family --ext-rules-max-depth=1 --ho-choice-inst=true --ho-prim-enum=none --ho-elim-leibniz=0 --interpret-bool-funs=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --ho-unif-level=pragmatic-framework --select=bb+e-selection2 --post-cnf-lambda-lifting=true -q \"4|prefer-sos|pnrefined(2,1,1,1,2,2,2)\" -q \"6|prefer-processed|conjecture-relative-struct(1.5,3.5,2,3)\" -q \"1|const|fifo\" -q \"4|prefer-ground|orient-lmax(2,1,2,1,1)\" -q \"4|defer-sos|conjecture-relative-struct(1,5,2,3)\" --avatar=off --recognize-injectivity=true --ho-neg-ext=true --e-timeout=2 --ho-pattern-decider=true --ho-fixpoint-decider=true --e-max-derived=50 --ignore-orphans=true --e-auto=true --presaturate=true --e-call-point=0.1")),
   533         ((256, mashN), format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic --tptp-def-as-rewrite --rewrite-before-cnf=true --mode=ho-competitive --boolean-reasoning=simpl-only --ext-rules=ext-family --ext-rules-max-depth=1 --ho-prim-enum=none --avatar=off --recognize-injectivity=true --ho-elim-leibniz=1 --ho-unif-level=pragmatic-framework --no-max-vars --max-inferences=2 --ho-unif-max-depth=1 -q \"6|prefer-sos|pnrefined(1,1,1,2,2,2,0.5)\" -q \"6|const|conjecture-relative-var(1.02,l,f)\" -q \"1|prefer-processed|fifo\" -q \"1|prefer-non-goals|conjecture-relative-var(1,l,f)\" -q \"4|prefer-easy-ho|conjecture-relative-var(1.01,s,f)\" --select=e-selection16 --ho-choice-inst=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=3 --e-auto=true --sine=50 --sine-tolerance=1.0 --sine-depth-max=3 --sine-depth-min=1 --sine-trim-implications=true --ho-unif-level=pragmatic-framework --e-encode-lambdas=lift --scan-clause-ac=false --kbo-weight-fun=lambda-def-invfreqrank --e-call-point=0.1"),
   535         ((256, mashN), (format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic --tptp-def-as-rewrite --rewrite-before-cnf=true --mode=ho-competitive --boolean-reasoning=simpl-only --ext-rules=ext-family --ext-rules-max-depth=1 --ho-prim-enum=none --avatar=off --recognize-injectivity=true --ho-elim-leibniz=1 --ho-unif-level=pragmatic-framework --no-max-vars --max-inferences=2 --ho-unif-max-depth=1 -q \"6|prefer-sos|pnrefined(1,1,1,2,2,2,0.5)\" -q \"6|const|conjecture-relative-var(1.02,l,f)\" -q \"1|prefer-processed|fifo\" -q \"1|prefer-non-goals|conjecture-relative-var(1,l,f)\" -q \"4|prefer-easy-ho|conjecture-relative-var(1.01,s,f)\" --select=e-selection16 --ho-choice-inst=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=3 --e-auto=true --sine=50 --sine-tolerance=1.0 --sine-depth-max=3 --sine-depth-min=1 --sine-trim-implications=true --ho-unif-level=pragmatic-framework --e-encode-lambdas=lift --scan-clause-ac=false --kbo-weight-fun=lambda-def-invfreqrank --e-call-point=0.1")),
   534         ((128, mepoN), format, "mono_native_higher_fool", keep_lamsN, false, "-nc --tptp-def-as-rewrite --rewrite-before-cnf=true --mode=ho-competitive --boolean-reasoning=simpl-only --ext-rules=off --ho-prim-enum=full --ho-prim-max=1 --avatar=off --recognize-injectivity=true --ho-elim-leibniz=4 --ho-unif-level=full-framework --no-max-vars -q \"2|prefer-goals|conjecture-relative-e(0.5,1,100,100,100,100,1.5,1.5,1)\" -q \"4|const|conjecture-relative-e(0.1,1,100,100,100,100,1.5,1.5,1.5)\" -q \"1|prefer-processed|fifo\" -q \"1|prefer-non-goals|conjecture-relative-e(0.5,1,100,100,100,100,1.5,1.5,1.5)\" -q \"4|prefer-sos|pnrefined(1,1,1,1,2,1.5,2)\" --select=ho-selection5 --ho-choice-inst=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=5 --e-call-point=0.25 --e-auto=true --sine=50 --sine-tolerance=2 --sine-depth-max=4 --sine-depth-min=1 --e-max-derived=96 --e-encode-lambdas=lift --scan-clause-ac=false --kbo-weight-fun=arity0 --prec-gen-fun=invfreq_conj"),
   536         ((128, mepoN), (format, "mono_native_higher_fool", keep_lamsN, false, "-nc --tptp-def-as-rewrite --rewrite-before-cnf=true --mode=ho-competitive --boolean-reasoning=simpl-only --ext-rules=off --ho-prim-enum=full --ho-prim-max=1 --avatar=off --recognize-injectivity=true --ho-elim-leibniz=4 --ho-unif-level=full-framework --no-max-vars -q \"2|prefer-goals|conjecture-relative-e(0.5,1,100,100,100,100,1.5,1.5,1)\" -q \"4|const|conjecture-relative-e(0.1,1,100,100,100,100,1.5,1.5,1.5)\" -q \"1|prefer-processed|fifo\" -q \"1|prefer-non-goals|conjecture-relative-e(0.5,1,100,100,100,100,1.5,1.5,1.5)\" -q \"4|prefer-sos|pnrefined(1,1,1,1,2,1.5,2)\" --select=ho-selection5 --ho-choice-inst=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=5 --e-call-point=0.25 --e-auto=true --sine=50 --sine-tolerance=2 --sine-depth-max=4 --sine-depth-min=1 --e-max-derived=96 --e-encode-lambdas=lift --scan-clause-ac=false --kbo-weight-fun=arity0 --prec-gen-fun=invfreq_conj")),
   535         ((1024, meshN), format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic -nc --tptp-def-as-rewrite --rewrite-before-cnf=true --mode=ho-competitive --boolean-reasoning=simpl-only --ext-rules=ext-family --ext-rules-max-depth=1 --ho-prim-enum=none --avatar=off --recognize-injectivity=true --ho-elim-leibniz=1 --ho-unif-level=pragmatic-framework --no-max-vars --max-inferences=4 --ho-max-app-projections=1 --ho-max-elims=0 --ho-max-rigid-imitations=2 --ho-max-identifications=0 --ho-unif-max-depth=3 -q \"6|prefer-sos|pnrefined(1,1,1,2,2,2,0.5)\" -q \"6|const|conjecture-relative-var(1.02,l,f)\" -q \"1|prefer-processed|fifo\" -q \"1|prefer-non-goals|conjecture-relative-var(1,l,f)\" -q \"4|prefer-easy-ho|conjecture-relative-var(1.01,s,f)\" --select=e-selection7 --ho-choice-inst=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=7 --sine=50 --sine-tolerance=1 --sine-depth-max=2 --sine-depth-min=1 --e-max-derived=64 --sine-ignore-k-most-common-syms=2 --sine-trim-implications=true --e-encode-lambdas=lift --scan-clause-ac=false --lambdasup=0 --kbo-weight-fun=lambda-def-invfreqrank --demod-in-var-args=true --bool-demod=true --lambda-demod=true --e-call-point=0.1"),
   537         ((1024, meshN), (format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic -nc --tptp-def-as-rewrite --rewrite-before-cnf=true --mode=ho-competitive --boolean-reasoning=simpl-only --ext-rules=ext-family --ext-rules-max-depth=1 --ho-prim-enum=none --avatar=off --recognize-injectivity=true --ho-elim-leibniz=1 --ho-unif-level=pragmatic-framework --no-max-vars --max-inferences=4 --ho-max-app-projections=1 --ho-max-elims=0 --ho-max-rigid-imitations=2 --ho-max-identifications=0 --ho-unif-max-depth=3 -q \"6|prefer-sos|pnrefined(1,1,1,2,2,2,0.5)\" -q \"6|const|conjecture-relative-var(1.02,l,f)\" -q \"1|prefer-processed|fifo\" -q \"1|prefer-non-goals|conjecture-relative-var(1,l,f)\" -q \"4|prefer-easy-ho|conjecture-relative-var(1.01,s,f)\" --select=e-selection7 --ho-choice-inst=true --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=7 --sine=50 --sine-tolerance=1 --sine-depth-max=2 --sine-depth-min=1 --e-max-derived=64 --sine-ignore-k-most-common-syms=2 --sine-trim-implications=true --e-encode-lambdas=lift --scan-clause-ac=false --lambdasup=0 --kbo-weight-fun=lambda-def-invfreqrank --demod-in-var-args=true --bool-demod=true --lambda-demod=true --e-call-point=0.1")),
   536         ((64, meshN), format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-comb-complete --boolean-reasoning=simpl-only --ext-rules=off --kbo-weight-fun=lambda-def-sqarity --ho-prim-enum=none --tptp-def-as-rewrite -q \"4|prefer-sos|orient-lmax(2,1,2,1,1)\" -q \"4|defer-sos|conjecture-relative-var(1,s,f)\" -q \"3|const|default\" -q \"1|prefer-processed|fifo\" --ho-elim-leibniz=1 --select=NoSelection --solve-formulas=true --lazy-cnf=true --lazy-cnf-kind=simp --lazy-cnf-renaming-threshold=8 --sine=60 --sine-tolerance=2 --sine-depth-max=5 --sine-depth-min=1 --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=3 --e-auto=true --e-max-derived=50 --e-encode-lambdas=ignore --scan-clause-ac=false --presaturate=true --comb-b-penalty=3 --comb-c-penalty=3 --comb-k-penalty=1 --comb-s-penalty=5 --subvarsup=false --e-call-point=0.15"),
   538         ((64, meshN), (format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-comb-complete --boolean-reasoning=simpl-only --ext-rules=off --kbo-weight-fun=lambda-def-sqarity --ho-prim-enum=none --tptp-def-as-rewrite -q \"4|prefer-sos|orient-lmax(2,1,2,1,1)\" -q \"4|defer-sos|conjecture-relative-var(1,s,f)\" -q \"3|const|default\" -q \"1|prefer-processed|fifo\" --ho-elim-leibniz=1 --select=NoSelection --solve-formulas=true --lazy-cnf=true --lazy-cnf-kind=simp --lazy-cnf-renaming-threshold=8 --sine=60 --sine-tolerance=2 --sine-depth-max=5 --sine-depth-min=1 --try-e=\"$E_HOME/eprover\" --tmp-dir=\"$ISABELLE_TMP_PREFIX\" --e-timeout=3 --e-auto=true --e-max-derived=50 --e-encode-lambdas=ignore --scan-clause-ac=false --presaturate=true --comb-b-penalty=3 --comb-c-penalty=3 --comb-k-penalty=1 --comb-s-penalty=5 --subvarsup=false --e-call-point=0.15")),
   537         ((512, meshN), format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic --boolean-reasoning=simpl-only --ho-unif-max-depth=0 --ho-prim-enum=none -q \"2|prefer-ho-steps|conjecture-relative-e(0.1,0.5,100,100,100,100,1.5,1.5,1.5)\" -q \"1|prefer-sos|pnrefined(1,1,1,2,2,2,0.5)\" -q \"2|prefer-ground|default\" -q \"2|prefer-empty-trail|conjecture-relative-e(0.1,0.5,100,100,100,100,1.5,1.5,1.5)\" -q \"1|prefer-processed|fifo\" --select=bb+e-selection7 --ho-pattern-decider=false --ho-fixpoint-decider=true --ho-solid-decider=false --sine=150 --sine-tolerance=2 --sine-depth-max=3 --sine-depth-min=1 --prec-gen-fun=invfreqhack --lazy-cnf=true --lazy-cnf-kind=simp --lazy-cnf-renaming-threshold=2 --fluid-log-hoist=false --tptp-def-as-rewrite --rewrite-before-cnf=true --ho-prim-enum=eq --ho-prim-enum-add-var=true --ho-prim-max=1 --ho-prim-enum-early-bird=true -o tptp --avatar=eager --split-only-ground=true")],
   539         ((512, meshN), (format, "mono_native_higher_fool", keep_lamsN, false, "--mode=ho-pragmatic --boolean-reasoning=simpl-only --ho-unif-max-depth=0 --ho-prim-enum=none -q \"2|prefer-ho-steps|conjecture-relative-e(0.1,0.5,100,100,100,100,1.5,1.5,1.5)\" -q \"1|prefer-sos|pnrefined(1,1,1,2,2,2,0.5)\" -q \"2|prefer-ground|default\" -q \"2|prefer-empty-trail|conjecture-relative-e(0.1,0.5,100,100,100,100,1.5,1.5,1.5)\" -q \"1|prefer-processed|fifo\" --select=bb+e-selection7 --ho-pattern-decider=false --ho-fixpoint-decider=true --ho-solid-decider=false --sine=150 --sine-tolerance=2 --sine-depth-max=3 --sine-depth-min=1 --prec-gen-fun=invfreqhack --lazy-cnf=true --lazy-cnf-kind=simp --lazy-cnf-renaming-threshold=2 --fluid-log-hoist=false --tptp-def-as-rewrite --rewrite-before-cnf=true --ho-prim-enum=eq --ho-prim-enum-add-var=true --ho-prim-max=1 --ho-prim-enum-early-bird=true -o tptp --avatar=eager --split-only-ground=true"))],
   538      best_max_mono_iters = default_max_mono_iters,
   540      good_max_mono_iters = default_max_mono_iters,
   539      best_max_new_mono_instances = default_max_new_mono_instances}
   541      good_max_new_mono_instances = default_max_new_mono_instances}
   540   end
   542   end
   541 
   543 
   542 val zipperposition = (zipperpositionN, fn () => zipperposition_config)
   544 val zipperposition = (zipperpositionN, fn () => zipperposition_config)
   543 
   545 
   544 
   546 
   579 
   581 
   580 val max_remote_secs = 1000   (* give Geoff Sutcliffe's servers a break *)
   582 val max_remote_secs = 1000   (* give Geoff Sutcliffe's servers a break *)
   581 
   583 
   582 val isabelle_scala_function = (["SCALA_HOME"], ["bin/scala"])
   584 val isabelle_scala_function = (["SCALA_HOME"], ["bin/scala"])
   583 
   585 
   584 fun remote_config system_name system_versions proof_delims known_failures prem_role best_slice =
   586 fun remote_config system_name system_versions proof_delims known_failures prem_role good_slice =
   585   {exec = isabelle_scala_function,
   587   {exec = isabelle_scala_function,
   586    arguments = fn _ => fn _ => fn command => fn timeout => fn problem => fn _ =>
   588    arguments = fn _ => fn _ => fn command => fn timeout => fn problem => fn _ =>
   587      [the_remote_system system_name system_versions,
   589      [the_remote_system system_name system_versions,
   588       Isabelle_System.absolute_path problem,
   590       Isabelle_System.absolute_path problem,
   589       command, string_of_int (Int.min (max_remote_secs, to_secs 1 timeout) * 1000)],
   591       command, string_of_int (Int.min (max_remote_secs, to_secs 1 timeout) * 1000)],
   590    proof_delims = union (op =) tstp_proof_delims proof_delims,
   592    proof_delims = union (op =) tstp_proof_delims proof_delims,
   591    known_failures = known_failures @ known_says_failures,
   593    known_failures = known_failures @ known_says_failures,
   592    prem_role = prem_role,
   594    prem_role = prem_role,
   593    best_slices = fn ctxt => [best_slice ctxt],
   595    good_slices = fn ctxt => [good_slice ctxt],
   594    best_max_mono_iters = default_max_mono_iters,
   596    good_max_mono_iters = default_max_mono_iters,
   595    best_max_new_mono_instances = default_max_new_mono_instances} : atp_config
   597    good_max_new_mono_instances = default_max_new_mono_instances} : atp_config
   596 
   598 
   597 fun remotify_config system_name system_versions best_slice
   599 fun remotify_config system_name system_versions good_slice
   598     ({proof_delims, known_failures, prem_role, ...} : atp_config) =
   600     ({proof_delims, known_failures, prem_role, ...} : atp_config) =
   599   remote_config system_name system_versions proof_delims known_failures prem_role best_slice
   601   remote_config system_name system_versions proof_delims known_failures prem_role good_slice
   600 
   602 
   601 fun remote_atp name system_name system_versions proof_delims known_failures prem_role best_slice =
   603 fun remote_atp name system_name system_versions proof_delims known_failures prem_role good_slice =
   602   (remote_prefix ^ name, fn () =>
   604   (remote_prefix ^ name, fn () =>
   603      remote_config system_name system_versions proof_delims known_failures prem_role best_slice)
   605      remote_config system_name system_versions proof_delims known_failures prem_role good_slice)
   604 fun remotify_atp (name, config) system_name system_versions best_slice =
   606 fun remotify_atp (name, config) system_name system_versions good_slice =
   605   (remote_prefix ^ name, remotify_config system_name system_versions best_slice o config)
   607   (remote_prefix ^ name, remotify_config system_name system_versions good_slice o config)
   606 
   608 
   607 fun gen_remote_waldmeister name type_enc =
   609 fun gen_remote_waldmeister name type_enc =
   608   remote_atp name "Waldmeister" ["710"] tstp_proof_delims
   610   remote_atp name "Waldmeister" ["710"] tstp_proof_delims
   609     ([(OutOfResources, "Too many function symbols"),
   611     ([(OutOfResources, "Too many function symbols"),
   610       (Inappropriate, "****  Unexpected end of file."),
   612       (Inappropriate, "****  Unexpected end of file."),
   611       (Crashed, "Unrecoverable Segmentation Fault")]
   613       (Crashed, "Unrecoverable Segmentation Fault")]
   612      @ known_szs_status_failures)
   614      @ known_szs_status_failures)
   613     Hypothesis
   615     Hypothesis
   614     (K ((50, meshN), CNF_UEQ, type_enc, combsN, false, "") (* FUDGE *))
   616     (K ((50, meshN), (CNF_UEQ, type_enc, combsN, false, "")) (* FUDGE *))
   615 
   617 
   616 val remote_agsyhol =
   618 val remote_agsyhol =
   617   remotify_atp agsyhol "agsyHOL" ["1.0", "1"]
   619   remotify_atp agsyhol "agsyHOL" ["1.0", "1"]
   618     (K ((60, meshN), THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "") (* FUDGE *))
   620     (K ((60, meshN), (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "")) (* FUDGE *))
   619 val remote_alt_ergo =
   621 val remote_alt_ergo =
   620   remotify_atp alt_ergo "Alt-Ergo" ["0.95.2"]
   622   remotify_atp alt_ergo "Alt-Ergo" ["0.95.2"]
   621     (K ((250, meshN), TF1, "poly_native", keep_lamsN, false, "") (* FUDGE *))
   623     (K ((250, meshN), (TF1, "poly_native", keep_lamsN, false, "")) (* FUDGE *))
   622 val remote_e =
   624 val remote_e =
   623   remotify_atp e "E" ["2.0", "1.9.1", "1.8"]
   625   remotify_atp e "E" ["2.0", "1.9.1", "1.8"]
   624     (K ((750, meshN), TF0, "mono_native", combsN, false, "") (* FUDGE *))
   626     (K ((750, meshN), (TF0, "mono_native", combsN, false, "")) (* FUDGE *))
   625 val remote_iprover =
   627 val remote_iprover =
   626   remotify_atp iprover "iProver" ["0.99"]
   628   remotify_atp iprover "iProver" ["0.99"]
   627     (K ((150, meshN), FOF, "mono_guards??", liftingN, false, "") (* FUDGE *))
   629     (K ((150, meshN), (FOF, "mono_guards??", liftingN, false, "")) (* FUDGE *))
   628 val remote_leo2 =
   630 val remote_leo2 =
   629   remotify_atp leo2 "LEO-II" ["1.5.0", "1.4", "1.3", "1.2", "1"]
   631   remotify_atp leo2 "LEO-II" ["1.5.0", "1.4", "1.3", "1.2", "1"]
   630     (K ((40, meshN), THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", liftingN, false, "") (* FUDGE *))
   632     (K ((40, meshN), (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", liftingN, false, "")) (* FUDGE *))
   631 val remote_leo3 =
   633 val remote_leo3 =
   632   remotify_atp leo3 "Leo-III" ["1.1"]
   634   remotify_atp leo3 "Leo-III" ["1.1"]
   633     (K ((150, meshN), THF (Polymorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "poly_native_higher", keep_lamsN, false, "") (* FUDGE *))
   635     (K ((150, meshN), (THF (Polymorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "poly_native_higher", keep_lamsN, false, "")) (* FUDGE *))
   634 val remote_waldmeister = gen_remote_waldmeister waldmeisterN "raw_mono_tags??"
   636 val remote_waldmeister = gen_remote_waldmeister waldmeisterN "raw_mono_tags??"
   635 val remote_zipperposition =
   637 val remote_zipperposition =
   636   remotify_atp zipperposition "Zipperpin" ["2.1", "2.0"]
   638   remotify_atp zipperposition "Zipperpin" ["2.1", "2.0"]
   637     (K ((512, meshN), THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "") (* FUDGE *))
   639     (K ((512, meshN), (THF (Monomorphic, {with_ite = false, with_let = false}, THF_Without_Choice), "mono_native_higher", keep_lamsN, false, "")) (* FUDGE *))
   638 
   640 
   639 
   641 
   640 (* Dummy prover *)
   642 (* Dummy prover *)
   641 
   643 
   642 fun dummy_config prem_role format type_enc uncurried_aliases : atp_config =
   644 fun dummy_config prem_role format type_enc uncurried_aliases : atp_config =
   643   {exec = (["ISABELLE_ATP"], ["scripts/dummy_atp"]),
   645   {exec = (["ISABELLE_ATP"], ["scripts/dummy_atp"]),
   644    arguments = K (K (K (K (K (K []))))),
   646    arguments = K (K (K (K (K (K []))))),
   645    proof_delims = [],
   647    proof_delims = [],
   646    known_failures = known_szs_status_failures,
   648    known_failures = known_szs_status_failures,
   647    prem_role = prem_role,
   649    prem_role = prem_role,
   648    best_slices =
   650    good_slices =
   649      K [((200, "mepo"), format, type_enc,
   651      K [((200, "mepo"), (format, type_enc,
   650         if is_format_higher_order format then keep_lamsN else combsN, uncurried_aliases, "")],
   652       if is_format_higher_order format then keep_lamsN else combsN, uncurried_aliases, ""))],
   651    best_max_mono_iters = default_max_mono_iters,
   653    good_max_mono_iters = default_max_mono_iters,
   652    best_max_new_mono_instances = default_max_new_mono_instances}
   654    good_max_new_mono_instances = default_max_new_mono_instances}
   653 
   655 
   654 val dummy_fof =
   656 val dummy_fof =
   655   (dummy_fofN, fn () => dummy_config Hypothesis FOF "mono_guards??" false)
   657   (dummy_fofN, fn () => dummy_config Hypothesis FOF "mono_guards??" false)
   656 
   658 
   657 val dummy_tfx =
   659 val dummy_tfx =