src/HOL/Mirabelle/Tools/mirabelle_sledgehammer.ML
changeset 55208 11dd3d1da83b
parent 55205 8450622db0c5
child 55211 5d027af93a08
equal deleted inserted replaced
55207:42ad887a1c7c 55208:11dd3d1da83b
   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) ^ ": " ^