src/HOL/Tools/Mirabelle/mirabelle_sledgehammer.ML
changeset 75001 d9a5824f68c8
parent 74997 d4a52993a81e
child 75003 f21e7e6172a0
equal deleted inserted replaced
75000:4466fae54ff9 75001:d9a5824f68c8
   327       else
   327       else
   328         NONE
   328         NONE
   329     val prover_name = hd provers
   329     val prover_name = hd provers
   330     val (sledgehamer_outcome, msg, cpu_time) =
   330     val (sledgehamer_outcome, msg, cpu_time) =
   331       run_sh params e_selection_heuristic term_order force_sos keep pos st
   331       run_sh params e_selection_heuristic term_order force_sos keep pos st
   332     val (outcome_msg, change_data, proof_method_and_used_thms) =
   332     val (time_prover, change_data, proof_method_and_used_thms) =
   333       (case sledgehamer_outcome of
   333       (case sledgehamer_outcome of
   334         Sledgehammer.SH_Some {used_facts, run_time, ...} =>
   334         Sledgehammer.SH_Some {used_facts, run_time, ...} =>
   335         let
   335         let
   336           val num_used_facts = length used_facts
   336           val num_used_facts = length used_facts
   337           val time_prover = Time.toMilliseconds run_time
   337           val time_prover = Time.toMilliseconds run_time
   338           fun get_thms (name, stature) =
   338           fun get_thms (name, stature) =
   339             try (Sledgehammer_Util.thms_of_name (Proof.context_of st))
   339             try (Sledgehammer_Util.thms_of_name (Proof.context_of st))
   340               name
   340               name
   341             |> Option.map (pair (name, stature))
   341             |> Option.map (pair (name, stature))
   342           val outcome_msg =
       
   343             " (" ^ string_of_int cpu_time ^ "+" ^ string_of_int time_prover ^ ")" ^
       
   344             " [" ^ prover_name ^ "]:\n"
       
   345           val change_data =
   342           val change_data =
   346             inc_sh_success
   343             inc_sh_success
   347             #> not trivial ? inc_sh_nontriv_success
   344             #> not trivial ? inc_sh_nontriv_success
   348             #> inc_sh_lemmas num_used_facts
   345             #> inc_sh_lemmas num_used_facts
   349             #> inc_sh_max_lems num_used_facts
   346             #> inc_sh_max_lems num_used_facts
   350             #> inc_sh_time_prover time_prover
   347             #> inc_sh_time_prover time_prover
   351         in
   348         in
   352           (outcome_msg, change_data,
   349           (SOME time_prover, change_data,
   353            SOME (proof_method_from_msg msg, map_filter get_thms used_facts))
   350            SOME (proof_method_from_msg msg, map_filter get_thms used_facts))
   354         end
   351         end
   355       | _ => ("", I, NONE))
   352       | _ => (NONE, I, NONE))
       
   353     val outcome_msg =
       
   354       "(SH " ^ string_of_int cpu_time ^ "ms" ^
       
   355       (case time_prover of NONE => "" | SOME ms => ", ATP " ^ string_of_int ms ^ "ms") ^
       
   356       ") [" ^ prover_name ^ "]: "
   356   in
   357   in
   357     (sledgehamer_outcome, triv_str ^ outcome_msg ^ msg, change_data #> inc_sh_time_isa cpu_time,
   358     (sledgehamer_outcome, triv_str ^ outcome_msg ^ msg, change_data #> inc_sh_time_isa cpu_time,
   358      proof_method_and_used_thms)
   359      proof_method_and_used_thms)
   359   end
   360   end
   360 
   361