src/HOL/Tools/Sledgehammer/sledgehammer_prover_minimize.ML
changeset 58061 3d060f43accb
parent 57781 c1ce4ef23be5
child 58085 ee65e9cfe284
equal deleted inserted replaced
58060:835b5443b978 58061:3d060f43accb
    39 open Sledgehammer_Fact
    39 open Sledgehammer_Fact
    40 open Sledgehammer_Proof_Methods
    40 open Sledgehammer_Proof_Methods
    41 open Sledgehammer_Isar
    41 open Sledgehammer_Isar
    42 open Sledgehammer_Prover
    42 open Sledgehammer_Prover
    43 open Sledgehammer_Prover_ATP
    43 open Sledgehammer_Prover_ATP
    44 open Sledgehammer_Prover_SMT2
    44 open Sledgehammer_Prover_SMT
    45 
    45 
    46 fun is_prover_supported ctxt =
    46 fun is_prover_supported ctxt =
    47   let val thy = Proof_Context.theory_of ctxt in
    47   let val thy = Proof_Context.theory_of ctxt in
    48     is_atp thy orf is_smt2_prover ctxt
    48     is_atp thy orf is_smt_prover ctxt
    49   end
    49   end
    50 
    50 
    51 fun is_prover_installed ctxt =
    51 fun is_prover_installed ctxt =
    52   is_smt2_prover ctxt orf is_atp_installed (Proof_Context.theory_of ctxt)
    52   is_smt_prover ctxt orf is_atp_installed (Proof_Context.theory_of ctxt)
    53 
    53 
    54 fun default_max_facts_of_prover ctxt name =
    54 fun default_max_facts_of_prover ctxt name =
    55   let val thy = Proof_Context.theory_of ctxt in
    55   let val thy = Proof_Context.theory_of ctxt in
    56     if is_atp thy name then
    56     if is_atp thy name then
    57       fold (Integer.max o fst o #1 o fst o snd) (#best_slices (get_atp thy name ()) ctxt) 0
    57       fold (Integer.max o fst o #1 o fst o snd) (#best_slices (get_atp thy name ()) ctxt) 0
    58     else if is_smt2_prover ctxt name then
    58     else if is_smt_prover ctxt name then
    59       SMT2_Solver.default_max_relevant ctxt name
    59       SMT_Solver.default_max_relevant ctxt name
    60     else
    60     else
    61       error ("No such prover: " ^ name ^ ".")
    61       error ("No such prover: " ^ name ^ ".")
    62   end
    62   end
    63 
    63 
    64 fun get_prover ctxt mode name =
    64 fun get_prover ctxt mode name =
    65   let val thy = Proof_Context.theory_of ctxt in
    65   let val thy = Proof_Context.theory_of ctxt in
    66     if is_atp thy name then run_atp mode name
    66     if is_atp thy name then run_atp mode name
    67     else if is_smt2_prover ctxt name then run_smt2_solver mode name
    67     else if is_smt_prover ctxt name then run_smt_solver mode name
    68     else error ("No such prover: " ^ name ^ ".")
    68     else error ("No such prover: " ^ name ^ ".")
    69   end
    69   end
    70 
    70 
    71 (* wrapper for calling external prover *)
    71 (* wrapper for calling external prover *)
    72 
    72