equal
deleted
inserted
replaced
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, ...} => |