src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
changeset 54141 f57f8e7a879f
parent 54126 6675cdc0d1ae
child 54434 e275d520f49d
equal deleted inserted replaced
54140:564b8adb0952 54141:f57f8e7a879f
    43      timeout : Time.time option,
    43      timeout : Time.time option,
    44      preplay_timeout : Time.time option,
    44      preplay_timeout : Time.time option,
    45      expect : string}
    45      expect : string}
    46 
    46 
    47   type prover_problem =
    47   type prover_problem =
    48     {state : Proof.state,
    48     {comment : string,
       
    49      state : Proof.state,
    49      goal : thm,
    50      goal : thm,
    50      subgoal : int,
    51      subgoal : int,
    51      subgoal_count : int,
    52      subgoal_count : int,
    52      factss : (string * fact list) list}
    53      factss : (string * fact list) list}
    53 
    54 
   284    timeout : Time.time option,
   285    timeout : Time.time option,
   285    preplay_timeout : Time.time option,
   286    preplay_timeout : Time.time option,
   286    expect : string}
   287    expect : string}
   287 
   288 
   288 type prover_problem =
   289 type prover_problem =
   289   {state : Proof.state,
   290   {comment : string,
       
   291    state : Proof.state,
   290    goal : thm,
   292    goal : thm,
   291    subgoal : int,
   293    subgoal : int,
   292    subgoal_count : int,
   294    subgoal_count : int,
   293    factss : (string * fact list) list}
   295    factss : (string * fact list) list}
   294 
   296 
   561         (params as {debug, verbose, overlord, type_enc, strict, lam_trans,
   563         (params as {debug, verbose, overlord, type_enc, strict, lam_trans,
   562                     uncurried_aliases, fact_filter, max_facts, max_mono_iters,
   564                     uncurried_aliases, fact_filter, max_facts, max_mono_iters,
   563                     max_new_mono_instances, isar_proofs, isar_compress,
   565                     max_new_mono_instances, isar_proofs, isar_compress,
   564                     isar_try0, slice, timeout, preplay_timeout, ...})
   566                     isar_try0, slice, timeout, preplay_timeout, ...})
   565         minimize_command
   567         minimize_command
   566         ({state, goal, subgoal, subgoal_count, factss, ...} : prover_problem) =
   568         ({comment, state, goal, subgoal, subgoal_count, factss, ...} : prover_problem) =
   567   let
   569   let
   568     val thy = Proof.theory_of state
   570     val thy = Proof.theory_of state
   569     val ctxt = Proof.context_of state
   571     val ctxt = Proof.context_of state
   570     val atp_mode =
   572     val atp_mode =
   571       if Config.get ctxt completish then Sledgehammer_Completish
   573       if Config.get ctxt completish then Sledgehammer_Completish
   725               "(exec 2>&1; " ^ File.shell_path command0 ^ " " ^ args ^ " " ^ ")"
   727               "(exec 2>&1; " ^ File.shell_path command0 ^ " " ^ args ^ " " ^ ")"
   726               |> enclose "TIMEFORMAT='%3R'; { time " " ; }"
   728               |> enclose "TIMEFORMAT='%3R'; { time " " ; }"
   727             val _ =
   729             val _ =
   728               atp_problem
   730               atp_problem
   729               |> lines_of_atp_problem format ord ord_info
   731               |> lines_of_atp_problem format ord ord_info
   730               |> cons ("% " ^ command ^ "\n")
   732               |> cons ("% " ^ command ^ "\n" ^
       
   733                 (if comment = "" then "" else "% " ^ comment ^ "\n"))
   731               |> File.write_list prob_path
   734               |> File.write_list prob_path
   732             val ((output, run_time), (atp_proof, outcome)) =
   735             val ((output, run_time), (atp_proof, outcome)) =
   733               time_limit generous_slice_timeout Isabelle_System.bash_output
   736               time_limit generous_slice_timeout Isabelle_System.bash_output
   734                          command
   737                          command
   735               |>> (if overlord then
   738               |>> (if overlord then