421 e_selection_heuristic |> the_default I) |
421 e_selection_heuristic |> the_default I) |
422 #> (Option.map (Config.put ATP_Systems.term_order) |
422 #> (Option.map (Config.put ATP_Systems.term_order) |
423 term_order |> the_default I) |
423 term_order |> the_default I) |
424 #> (Option.map (Config.put ATP_Systems.force_sos) |
424 #> (Option.map (Config.put ATP_Systems.force_sos) |
425 force_sos |> the_default I)) |
425 force_sos |> the_default I)) |
426 val params as {relevance_thresholds, max_relevant, slice, ...} = |
426 val params as {max_relevant, slice, ...} = |
427 Sledgehammer_Isar.default_params ctxt |
427 Sledgehammer_Isar.default_params ctxt |
428 ([("verbose", "true"), |
428 ([("verbose", "true"), |
429 ("type_enc", type_enc), |
429 ("type_enc", type_enc), |
430 ("strict", strict), |
430 ("strict", strict), |
431 ("lam_trans", lam_trans |> the_default lam_trans_default), |
431 ("lam_trans", lam_trans |> the_default lam_trans_default), |
440 val default_max_relevant = |
440 val default_max_relevant = |
441 Sledgehammer_Provers.default_max_relevant_for_prover ctxt slice |
441 Sledgehammer_Provers.default_max_relevant_for_prover ctxt slice |
442 prover_name |
442 prover_name |
443 val is_appropriate_prop = |
443 val is_appropriate_prop = |
444 Sledgehammer_Provers.is_appropriate_prop_for_prover ctxt prover_name |
444 Sledgehammer_Provers.is_appropriate_prop_for_prover ctxt prover_name |
445 val is_built_in_const = |
|
446 Sledgehammer_Provers.is_built_in_const_for_prover ctxt prover_name |
|
447 val relevance_fudge = |
|
448 Sledgehammer_Provers.relevance_fudge_for_prover ctxt prover_name |
|
449 val relevance_override = {add = [], del = [], only = false} |
|
450 val (_, hyp_ts, concl_t) = ATP_Util.strip_subgoal ctxt goal i |
445 val (_, hyp_ts, concl_t) = ATP_Util.strip_subgoal ctxt goal i |
451 val time_limit = |
446 val time_limit = |
452 (case hard_timeout of |
447 (case hard_timeout of |
453 NONE => I |
448 NONE => I |
454 | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs)) |
449 | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs)) |
463 let |
458 let |
464 val _ = if is_appropriate_prop concl_t then () |
459 val _ = if is_appropriate_prop concl_t then () |
465 else raise Fail "inappropriate" |
460 else raise Fail "inappropriate" |
466 val ho_atp = Sledgehammer_Provers.is_ho_atp ctxt prover_name |
461 val ho_atp = Sledgehammer_Provers.is_ho_atp ctxt prover_name |
467 val facts = |
462 val facts = |
468 Sledgehammer_Fact.nearly_all_facts ctxt ho_atp relevance_override |
463 Sledgehammer_Fact.nearly_all_facts ctxt ho_atp |
469 chained_ths hyp_ts concl_t |
464 Sledgehammer_Fact.no_relevance_override chained_ths hyp_ts concl_t |
470 |> filter (is_appropriate_prop o prop_of o snd) |
465 |> filter (is_appropriate_prop o prop_of o snd) |
471 |> Sledgehammer_Filter.relevant_facts ctxt relevance_thresholds |
466 |> Sledgehammer_Filter_MaSh.relevant_facts ctxt params prover_name |
472 (the_default default_max_relevant max_relevant) |
467 (the_default default_max_relevant max_relevant) |
473 is_built_in_const relevance_fudge relevance_override |
468 Sledgehammer_Fact.no_relevance_override chained_ths hyp_ts |
474 chained_ths hyp_ts concl_t |
469 concl_t |
475 val problem = |
470 val problem = |
476 {state = st', goal = goal, subgoal = i, |
471 {state = st', goal = goal, subgoal = i, |
477 subgoal_count = Sledgehammer_Util.subgoal_count st, |
472 subgoal_count = Sledgehammer_Util.subgoal_count st, |
478 facts = facts |> map Sledgehammer_Provers.Untranslated_Fact} |
473 facts = facts |> map Sledgehammer_Provers.Untranslated_Fact} |
479 in prover params (K (K (K ""))) problem end)) () |
474 in prover params (K (K (K ""))) problem end)) () |