453 |> sh_minimizeLST (*don't confuse the two minimization flags*) |
453 |> sh_minimizeLST (*don't confuse the two minimization flags*) |
454 |> max_new_mono_instancesLST |
454 |> max_new_mono_instancesLST |
455 |> max_mono_itersLST) |
455 |> max_mono_itersLST) |
456 val default_max_facts = |
456 val default_max_facts = |
457 Sledgehammer_Prover_Minimize.default_max_facts_of_prover ctxt prover_name |
457 Sledgehammer_Prover_Minimize.default_max_facts_of_prover ctxt prover_name |
458 val is_appropriate_prop = |
|
459 Sledgehammer_Prover.is_appropriate_prop_of_prover ctxt prover_name |
|
460 val (_, hyp_ts, concl_t) = ATP_Util.strip_subgoal goal i ctxt |
458 val (_, hyp_ts, concl_t) = ATP_Util.strip_subgoal goal i ctxt |
461 val time_limit = |
459 val time_limit = |
462 (case hard_timeout of |
460 (case hard_timeout of |
463 NONE => I |
461 NONE => I |
464 | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs)) |
462 | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs)) |
470 message = K "", message_tail = ""}, ~1) |
468 message = K "", message_tail = ""}, ~1) |
471 val ({outcome, used_facts, run_time, preplay, message, message_tail, ...} |
469 val ({outcome, used_facts, run_time, preplay, message, message_tail, ...} |
472 : Sledgehammer_Prover.prover_result, |
470 : Sledgehammer_Prover.prover_result, |
473 time_isa) = time_limit (Mirabelle.cpu_time (fn () => |
471 time_isa) = time_limit (Mirabelle.cpu_time (fn () => |
474 let |
472 let |
475 val _ = if is_appropriate_prop concl_t then () |
|
476 else raise Fail "inappropriate" |
|
477 val ho_atp = Sledgehammer_Prover.is_ho_atp ctxt prover_name |
473 val ho_atp = Sledgehammer_Prover.is_ho_atp ctxt prover_name |
478 val reserved = Sledgehammer_Util.reserved_isar_keyword_table () |
474 val reserved = Sledgehammer_Util.reserved_isar_keyword_table () |
479 val css_table = Sledgehammer_Fact.clasimpset_rule_table_of ctxt |
475 val css_table = Sledgehammer_Fact.clasimpset_rule_table_of ctxt |
480 val facts = |
476 val facts = |
481 Sledgehammer_Fact.nearly_all_facts ctxt ho_atp |
477 Sledgehammer_Fact.nearly_all_facts ctxt ho_atp |
482 Sledgehammer_Fact.no_fact_override reserved css_table chained_ths |
478 Sledgehammer_Fact.no_fact_override reserved css_table chained_ths |
483 hyp_ts concl_t |
479 hyp_ts concl_t |
484 val factss = |
480 val factss = |
485 facts |
481 facts |
486 |> filter (is_appropriate_prop o prop_of o snd) |
|
487 |> Sledgehammer_MaSh.relevant_facts ctxt params prover_name |
482 |> Sledgehammer_MaSh.relevant_facts ctxt params prover_name |
488 (the_default default_max_facts max_facts) |
483 (the_default default_max_facts max_facts) |
489 Sledgehammer_Fact.no_fact_override hyp_ts concl_t |
484 Sledgehammer_Fact.no_fact_override hyp_ts concl_t |
490 |> tap (fn factss => |
485 |> tap (fn factss => |
491 "Line " ^ str0 (Position.line_of pos) ^ ": " ^ |
486 "Line " ^ str0 (Position.line_of pos) ^ ": " ^ |