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 |