src/HOL/Mirabelle/Tools/mirabelle_sledgehammer.ML
changeset 40059 6ad9081665db
parent 39494 bf7dd4902321
child 40060 5ef6747aa619
equal deleted inserted replaced
40058:b4f62d0660e0 40059:6ad9081665db
   314 
   314 
   315 
   315 
   316 fun get_atp thy args =
   316 fun get_atp thy args =
   317   let
   317   let
   318     fun default_atp_name () =
   318     fun default_atp_name () =
   319       hd (#atps (Sledgehammer_Isar.default_params thy []))
   319       hd (#provers (Sledgehammer_Isar.default_params thy []))
   320       handle Empty => error "No ATP available."
   320       handle Empty => error "No ATP available."
   321     fun get_prover name = (name, Sledgehammer.get_prover_fun thy name)
   321     fun get_atp name = (name, Sledgehammer.get_atp_fun thy name)
   322   in
   322   in
   323     (case AList.lookup (op =) args proverK of
   323     (case AList.lookup (op =) args proverK of
   324       SOME name => get_prover name
   324       SOME name => get_atp name
   325     | NONE => get_prover (default_atp_name ()))
   325     | NONE => get_atp (default_atp_name ()))
   326   end
   326   end
   327 
   327 
   328 type locality = Sledgehammer_Filter.locality
   328 type locality = Sledgehammer_Filter.locality
   329 
   329 
   330 local
   330 local
   347                  #> Config.put Sledgehammer.measure_run_time true)
   347                  #> Config.put Sledgehammer.measure_run_time true)
   348     val params as {full_types, relevance_thresholds, max_relevant, ...} =
   348     val params as {full_types, relevance_thresholds, max_relevant, ...} =
   349       Sledgehammer_Isar.default_params thy
   349       Sledgehammer_Isar.default_params thy
   350           [("timeout", Int.toString timeout ^ " s")]
   350           [("timeout", Int.toString timeout ^ " s")]
   351     val relevance_override = {add = [], del = [], only = false}
   351     val relevance_override = {add = [], del = [], only = false}
   352     val {default_max_relevant, ...} = ATP_Systems.get_prover thy prover_name
   352     val {default_max_relevant, ...} = ATP_Systems.get_atp thy prover_name
   353     val (_, hyp_ts, concl_t) = Sledgehammer_Util.strip_subgoal goal i
   353     val (_, hyp_ts, concl_t) = Sledgehammer_Util.strip_subgoal goal i
   354     val axioms =
   354     val axioms =
   355       Sledgehammer_Filter.relevant_facts ctxt full_types relevance_thresholds
   355       Sledgehammer_Filter.relevant_facts ctxt full_types relevance_thresholds
   356           (the_default default_max_relevant max_relevant)
   356           (the_default default_max_relevant max_relevant)
   357           relevance_override chained_ths hyp_ts concl_t
   357           relevance_override chained_ths hyp_ts concl_t
   362     val time_limit =
   362     val time_limit =
   363       (case hard_timeout of
   363       (case hard_timeout of
   364         NONE => I
   364         NONE => I
   365       | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs))
   365       | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs))
   366     val ({outcome, message, used_thm_names,
   366     val ({outcome, message, used_thm_names,
   367           atp_run_time_in_msecs = time_atp, ...} : Sledgehammer.prover_result,
   367           atp_run_time_in_msecs = time_atp, ...} : Sledgehammer.atp_result,
   368         time_isa) = time_limit (Mirabelle.cpu_time
   368         time_isa) = time_limit (Mirabelle.cpu_time
   369                       (prover params (K ""))) problem
   369                       (prover params (K ""))) problem
   370   in
   370   in
   371     case outcome of
   371     case outcome of
   372       NONE => (message, SH_OK (time_isa, time_atp, used_thm_names))
   372       NONE => (message, SH_OK (time_isa, time_atp, used_thm_names))
   441     val timeout =
   441     val timeout =
   442       AList.lookup (op =) args minimize_timeoutK
   442       AList.lookup (op =) args minimize_timeoutK
   443       |> Option.map (fst o read_int o explode)
   443       |> Option.map (fst o read_int o explode)
   444       |> the_default 5
   444       |> the_default 5
   445     val params = Sledgehammer_Isar.default_params thy
   445     val params = Sledgehammer_Isar.default_params thy
   446       [("atps", prover_name), ("timeout", Int.toString timeout ^ " s")]
   446       [("provers", prover_name), ("timeout", Int.toString timeout ^ " s")]
   447     val minimize =
   447     val minimize =
   448       Sledgehammer_Minimize.minimize_theorems params 1 (subgoal_count st)
   448       Sledgehammer_Minimize.minimize_theorems params 1 (subgoal_count st)
   449     val _ = log separator
   449     val _ = log separator
   450   in
   450   in
   451     case minimize st (these (!named_thms)) of
   451     case minimize st (these (!named_thms)) of