src/HOL/Tools/SMT/smt_solver.ML
changeset 46464 4cf5a84e2c05
parent 42616 92715b528e78
child 46497 89ccf66aa73d
equal deleted inserted replaced
46463:3d0629a9ffca 46464:4cf5a84e2c05
    37     ('a * (int option * thm)) list -> int -> 'a smt_filter_data
    37     ('a * (int option * thm)) list -> int -> 'a smt_filter_data
    38   val smt_filter_apply: Time.time -> 'a smt_filter_data ->
    38   val smt_filter_apply: Time.time -> 'a smt_filter_data ->
    39     {outcome: SMT_Failure.failure option, used_facts: ('a * thm) list}
    39     {outcome: SMT_Failure.failure option, used_facts: ('a * thm) list}
    40 
    40 
    41   (*tactic*)
    41   (*tactic*)
    42   val smt_tac: Proof.context -> thm list -> int -> Tactical.tactic
    42   val smt_tac: Proof.context -> thm list -> int -> tactic
    43   val smt_tac': Proof.context -> thm list -> int -> Tactical.tactic
    43   val smt_tac': Proof.context -> thm list -> int -> tactic
    44 
    44 
    45   (*setup*)
    45   (*setup*)
    46   val setup: theory -> theory
    46   val setup: theory -> theory
    47 end
    47 end
    48 
    48 
   355 
   355 
   356   fun tag_rules thms = map_index (apsnd (pair NONE)) thms
   356   fun tag_rules thms = map_index (apsnd (pair NONE)) thms
   357   fun tag_prems thms = map (pair ~1 o pair NONE) thms
   357   fun tag_prems thms = map (pair ~1 o pair NONE) thms
   358 
   358 
   359   fun resolve (SOME thm) = Tactic.rtac thm 1
   359   fun resolve (SOME thm) = Tactic.rtac thm 1
   360     | resolve NONE = Tactical.no_tac
   360     | resolve NONE = no_tac
   361 
   361 
   362   fun tac prove ctxt rules =
   362   fun tac prove ctxt rules =
   363     CONVERSION (SMT_Normalize.atomize_conv ctxt)
   363     CONVERSION (SMT_Normalize.atomize_conv ctxt)
   364     THEN' Tactic.rtac @{thm ccontr}
   364     THEN' Tactic.rtac @{thm ccontr}
   365     THEN' SUBPROOF (fn {context, prems, ...} =>
   365     THEN' SUBPROOF (fn {context, prems, ...} =>