src/HOL/Tools/Sledgehammer/sledgehammer_proof_methods.ML
changeset 60305 7d278b0617d3
parent 60252 2c468c062589
child 60350 9251f82337d6
equal deleted inserted replaced
60304:3f429b7d8eb5 60305:7d278b0617d3
    35 
    35 
    36   val is_proof_method_direct : proof_method -> bool
    36   val is_proof_method_direct : proof_method -> bool
    37   val proof_method_distinguishes_chained_and_direct : proof_method -> bool
    37   val proof_method_distinguishes_chained_and_direct : proof_method -> bool
    38   val string_of_proof_method : Proof.context -> string list -> proof_method -> string
    38   val string_of_proof_method : Proof.context -> string list -> proof_method -> string
    39   val tac_of_proof_method : Proof.context -> thm list * thm list -> proof_method -> int -> tactic
    39   val tac_of_proof_method : Proof.context -> thm list * thm list -> proof_method -> int -> tactic
    40   val thms_influence_proof_method : Proof.context -> proof_method -> thm list -> bool
       
    41   val string_of_play_outcome : play_outcome -> string
    40   val string_of_play_outcome : play_outcome -> string
    42   val play_outcome_ord : play_outcome * play_outcome -> order
    41   val play_outcome_ord : play_outcome * play_outcome -> order
    43   val one_line_proof_text : Proof.context -> int -> one_line_params -> string
    42   val one_line_proof_text : Proof.context -> int -> one_line_params -> string
    44 end;
    43 end;
    45 
    44 
   139     | Linarith_Method =>
   138     | Linarith_Method =>
   140       let val ctxt = Config.put Lin_Arith.verbose false ctxt in Lin_Arith.tac ctxt end
   139       let val ctxt = Config.put Lin_Arith.verbose false ctxt in Lin_Arith.tac ctxt end
   141     | Presburger_Method => Cooper.tac true [] [] ctxt
   140     | Presburger_Method => Cooper.tac true [] [] ctxt
   142     | Algebra_Method => Groebner.algebra_tac [] [] ctxt))
   141     | Algebra_Method => Groebner.algebra_tac [] [] ctxt))
   143 
   142 
   144 val simp_based_methods = [Simp_Method, Simp_Size_Method, Auto_Method, Force_Method, Moura_Method]
       
   145 
       
   146 fun thms_influence_proof_method ctxt meth ths =
       
   147   not (member (op =) simp_based_methods meth) orelse
       
   148   (* unfortunate pointer comparison -- but it's always safe to consider a theorem useful *)
       
   149   not (pointer_eq (ctxt addsimps ths, ctxt))
       
   150 
       
   151 fun string_of_play_outcome (Played time) = string_of_ext_time (false, time)
   143 fun string_of_play_outcome (Played time) = string_of_ext_time (false, time)
   152   | string_of_play_outcome (Play_Timed_Out time) =
   144   | string_of_play_outcome (Play_Timed_Out time) =
   153     if time = Time.zeroTime then "" else string_of_ext_time (true, time) ^ ", timed out"
   145     if time = Time.zeroTime then "" else string_of_ext_time (true, time) ^ ", timed out"
   154   | string_of_play_outcome Play_Failed = "failed"
   146   | string_of_play_outcome Play_Failed = "failed"
   155 
   147