src/HOL/Tools/Sledgehammer/sledgehammer_prover_smt2.ML
changeset 57734 18bb3e1ff6f6
parent 57732 e1b2442dc629
child 57735 056a55b44ec7
equal deleted inserted replaced
57733:bcb84750eca5 57734:18bb3e1ff6f6
   190       smt2_filter_loop name params state goal subgoal factss
   190       smt2_filter_loop name params state goal subgoal factss
   191     val used_named_facts = map snd fact_ids
   191     val used_named_facts = map snd fact_ids
   192     val used_facts = map fst used_named_facts
   192     val used_facts = map fst used_named_facts
   193     val outcome = Option.map failure_of_smt2_failure outcome
   193     val outcome = Option.map failure_of_smt2_failure outcome
   194 
   194 
   195     val (preplay, message, message_tail) =
   195     val (preferred_methss, message, message_tail) =
   196       (case outcome of
   196       (case outcome of
   197         NONE =>
   197         NONE =>
   198         (Lazy.lazy (fn () =>
   198         let
   199            play_one_line_proof mode preplay_timeout used_named_facts state subgoal SMT2_Method
   199           val preferred_methss =
   200              (bunch_of_proof_methods (smt_proofs <> SOME false) false liftingN)),
   200             (SMT2_Method, bunches_of_proof_methods (smt_proofs <> SOME false) false liftingN)
   201          fn preplay =>
   201         in
   202             let
   202           (preferred_methss,
   203               val _ = if verbose then Output.urgent_message "Generating proof text..." else ()
   203            fn preplay =>
   204 
   204              let
   205               fun isar_params () =
   205                val _ = if verbose then Output.urgent_message "Generating proof text..." else ()
   206                 (verbose, (NONE, NONE), preplay_timeout, compress, try0, minimize, atp_proof (),
   206 
   207                  goal)
   207                fun isar_params () =
   208 
   208                  (verbose, (NONE, NONE), preplay_timeout, compress, try0, minimize, atp_proof (),
   209               val one_line_params =
   209                   goal)
   210                 (preplay, proof_banner mode name, used_facts, minimize_command [] name, subgoal,
   210 
   211                  subgoal_count)
   211                val one_line_params =
   212               val num_chained = length (#facts (Proof.goal state))
   212                  (preplay, proof_banner mode name, used_facts, minimize_command [] name, subgoal,
   213             in
   213                   subgoal_count)
   214               proof_text ctxt debug isar_proofs smt_proofs isar_params num_chained one_line_params
   214                val num_chained = length (#facts (Proof.goal state))
   215             end,
   215              in
   216          if verbose then "\nSMT solver real CPU time: " ^ string_of_time run_time ^ "." else "")
   216                proof_text ctxt debug isar_proofs smt_proofs isar_params num_chained one_line_params
   217       | SOME failure =>
   217              end,
   218         (Lazy.value (Metis_Method (NONE, NONE), Play_Failed),
   218            if verbose then "\nSMT solver real CPU time: " ^ string_of_time run_time ^ "." else "")
   219          fn _ => string_of_atp_failure failure, ""))
   219         end
       
   220       | SOME failure => ((Auto_Method (* dummy *), []), fn _ => string_of_atp_failure failure, ""))
   220   in
   221   in
   221     {outcome = outcome, used_facts = used_facts, used_from = used_from, run_time = run_time,
   222     {outcome = outcome, used_facts = used_facts, used_from = used_from,
   222      preplay = preplay, message = message, message_tail = message_tail}
   223      preferred_methss = preferred_methss, run_time = run_time, message = message,
       
   224      message_tail = message_tail}
   223   end
   225   end
   224 
   226 
   225 end;
   227 end;