src/HOL/Mirabelle/Tools/mirabelle_sledgehammer.ML
changeset 48288 255c6e1fd505
parent 48250 1065c307fafe
child 48289 6b65f1ad0e4b
equal deleted inserted replaced
48287:61acb731b4a2 48288:255c6e1fd505
   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)) ()