305 val change_dir = (fn SOME d => Config.put ATP_Wrapper.destdir d | _ => I) |
305 val change_dir = (fn SOME d => Config.put ATP_Wrapper.destdir d | _ => I) |
306 val ctxt' = |
306 val ctxt' = |
307 ctxt |
307 ctxt |
308 |> change_dir dir |
308 |> change_dir dir |
309 |> Config.put ATP_Wrapper.measure_runtime true |
309 |> Config.put ATP_Wrapper.measure_runtime true |
310 val problem = ATP_Wrapper.problem_of_goal (! ATP_Manager.full_types) 1 (ctxt', (facts, goal)); |
310 val problem = ATP_Manager.problem_of_goal (! ATP_Manager.full_types) 1 (ctxt', (facts, goal)); |
311 |
311 |
312 val time_limit = |
312 val time_limit = |
313 (case hard_timeout of |
313 (case hard_timeout of |
314 NONE => I |
314 NONE => I |
315 | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs)) |
315 | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs)) |
316 val ({success, message, theorem_names, runtime=time_atp, ...}: ATP_Wrapper.prover_result, |
316 val ({success, message, theorem_names, runtime=time_atp, ...}: ATP_Manager.prover_result, |
317 time_isa) = time_limit (Mirabelle.cpu_time (fn t => prover t problem)) timeout |
317 time_isa) = time_limit (Mirabelle.cpu_time (fn t => prover t problem)) timeout |
318 in |
318 in |
319 if success then (message, SH_OK (time_isa, time_atp, theorem_names)) |
319 if success then (message, SH_OK (time_isa, time_atp, theorem_names)) |
320 else (message, SH_FAIL(time_isa, time_atp)) |
320 else (message, SH_FAIL(time_isa, time_atp)) |
321 end |
321 end |