src/HOL/Mirabelle/Tools/mirabelle_sledgehammer.ML
changeset 46320 0b8b73b49848
parent 45706 418846ea4f99
child 46340 cac402c486b0
equal deleted inserted replaced
46319:c248e4f1be74 46320:0b8b73b49848
   334     (case AList.lookup (op =) args proverK of
   334     (case AList.lookup (op =) args proverK of
   335       SOME name => get_prover name
   335       SOME name => get_prover name
   336     | NONE => get_prover (default_prover_name ()))
   336     | NONE => get_prover (default_prover_name ()))
   337   end
   337   end
   338 
   338 
   339 type locality = ATP_Translate.locality
   339 type locality = ATP_Problem_Generate.locality
   340 
   340 
   341 (* hack *)
   341 (* hack *)
   342 fun reconstructor_from_msg args msg =
   342 fun reconstructor_from_msg args msg =
   343   (case AList.lookup (op =) args reconstructorK of
   343   (case AList.lookup (op =) args reconstructorK of
   344     SOME name => name
   344     SOME name => name
   408         NONE => I
   408         NONE => I
   409       | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs))
   409       | SOME secs => TimeLimit.timeLimit (Time.fromSeconds secs))
   410     fun failed failure =
   410     fun failed failure =
   411       ({outcome = SOME failure, used_facts = [], run_time = Time.zeroTime,
   411       ({outcome = SOME failure, used_facts = [], run_time = Time.zeroTime,
   412         preplay =
   412         preplay =
   413           K (ATP_Reconstruct.Failed_to_Play Sledgehammer_Provers.plain_metis),
   413           K (ATP_Proof_Reconstruct.Failed_to_Play Sledgehammer_Provers.plain_metis),
   414         message = K "", message_tail = ""}, ~1)
   414         message = K "", message_tail = ""}, ~1)
   415     val ({outcome, used_facts, run_time, preplay, message, message_tail}
   415     val ({outcome, used_facts, run_time, preplay, message, message_tail}
   416          : Sledgehammer_Provers.prover_result,
   416          : Sledgehammer_Provers.prover_result,
   417         time_isa) = time_limit (Mirabelle.cpu_time (fn () =>
   417         time_isa) = time_limit (Mirabelle.cpu_time (fn () =>
   418       let
   418       let
   579         if !reconstructor = "sledgehammer_tac" then
   579         if !reconstructor = "sledgehammer_tac" then
   580           sledge_tac 0.2 ATP_Systems.z3_tptpN "mono_simple"
   580           sledge_tac 0.2 ATP_Systems.z3_tptpN "mono_simple"
   581           ORELSE' sledge_tac 0.2 ATP_Systems.eN "mono_guards??"
   581           ORELSE' sledge_tac 0.2 ATP_Systems.eN "mono_guards??"
   582           ORELSE' sledge_tac 0.2 ATP_Systems.vampireN "mono_guards??"
   582           ORELSE' sledge_tac 0.2 ATP_Systems.vampireN "mono_guards??"
   583           ORELSE' sledge_tac 0.2 ATP_Systems.spassN "poly_tags"
   583           ORELSE' sledge_tac 0.2 ATP_Systems.spassN "poly_tags"
   584           ORELSE' Metis_Tactic.metis_tac [] ATP_Translate.combinatorsN ctxt thms
   584           ORELSE' Metis_Tactic.metis_tac [] ATP_Problem_Generate.combinatorsN
       
   585             ctxt thms
   585         else if !reconstructor = "smt" then
   586         else if !reconstructor = "smt" then
   586           SMT_Solver.smt_tac ctxt thms
   587           SMT_Solver.smt_tac ctxt thms
   587         else if full then
   588         else if full then
   588           Metis_Tactic.metis_tac [ATP_Reconstruct.full_typesN]
   589           Metis_Tactic.metis_tac [ATP_Proof_Reconstruct.full_typesN]
   589             ATP_Reconstruct.metis_default_lam_trans ctxt thms
   590             ATP_Proof_Reconstruct.metis_default_lam_trans ctxt thms
   590         else if String.isPrefix "metis (" (!reconstructor) then
   591         else if String.isPrefix "metis (" (!reconstructor) then
   591           let
   592           let
   592             val (type_encs, lam_trans) =
   593             val (type_encs, lam_trans) =
   593               !reconstructor
   594               !reconstructor
   594               |> Outer_Syntax.scan Position.start
   595               |> Outer_Syntax.scan Position.start
   595               |> filter Token.is_proper |> tl
   596               |> filter Token.is_proper |> tl
   596               |> Metis_Tactic.parse_metis_options |> fst
   597               |> Metis_Tactic.parse_metis_options |> fst
   597               |>> the_default [ATP_Reconstruct.partial_typesN]
   598               |>> the_default [ATP_Proof_Reconstruct.partial_typesN]
   598               ||> the_default ATP_Reconstruct.metis_default_lam_trans
   599               ||> the_default ATP_Proof_Reconstruct.metis_default_lam_trans
   599           in Metis_Tactic.metis_tac type_encs lam_trans ctxt thms end
   600           in Metis_Tactic.metis_tac type_encs lam_trans ctxt thms end
   600         else if !reconstructor = "metis" then
   601         else if !reconstructor = "metis" then
   601           Metis_Tactic.metis_tac [] ATP_Reconstruct.metis_default_lam_trans ctxt
   602           Metis_Tactic.metis_tac [] ATP_Proof_Reconstruct.metis_default_lam_trans ctxt
   602             thms
   603             thms
   603         else
   604         else
   604           K all_tac
   605           K all_tac
   605       end
   606       end
   606     fun apply_reconstructor named_thms =
   607     fun apply_reconstructor named_thms =