22 val dtac: thm -> int -> tactic |
22 val dtac: thm -> int -> tactic |
23 val etac: thm -> int -> tactic |
23 val etac: thm -> int -> tactic |
24 val ftac: thm -> int -> tactic |
24 val ftac: thm -> int -> tactic |
25 val ares_tac: thm list -> int -> tactic |
25 val ares_tac: thm list -> int -> tactic |
26 val solve_tac: thm list -> int -> tactic |
26 val solve_tac: thm list -> int -> tactic |
27 val bimatch_tac: (bool * thm) list -> int -> tactic |
27 val bimatch_tac: Proof.context -> (bool * thm) list -> int -> tactic |
28 val match_tac: thm list -> int -> tactic |
28 val match_tac: Proof.context -> thm list -> int -> tactic |
29 val ematch_tac: thm list -> int -> tactic |
29 val ematch_tac: Proof.context -> thm list -> int -> tactic |
30 val dmatch_tac: thm list -> int -> tactic |
30 val dmatch_tac: Proof.context -> thm list -> int -> tactic |
31 val flexflex_tac: Proof.context -> tactic |
31 val flexflex_tac: Proof.context -> tactic |
32 val distinct_subgoal_tac: int -> tactic |
32 val distinct_subgoal_tac: int -> tactic |
33 val distinct_subgoals_tac: tactic |
33 val distinct_subgoals_tac: tactic |
34 val cut_tac: thm -> int -> tactic |
34 val cut_tac: thm -> int -> tactic |
35 val cut_rules_tac: thm list -> int -> tactic |
35 val cut_rules_tac: thm list -> int -> tactic |
144 fun ares_tac rules = assume_tac ORELSE' resolve_tac rules; |
144 fun ares_tac rules = assume_tac ORELSE' resolve_tac rules; |
145 |
145 |
146 fun solve_tac rules = resolve_tac rules THEN_ALL_NEW assume_tac; |
146 fun solve_tac rules = resolve_tac rules THEN_ALL_NEW assume_tac; |
147 |
147 |
148 (*Matching tactics -- as above, but forbid updating of state*) |
148 (*Matching tactics -- as above, but forbid updating of state*) |
149 fun bimatch_tac brules i = PRIMSEQ (Thm.biresolution NONE true brules i); |
149 fun bimatch_tac ctxt brules i = PRIMSEQ (Thm.biresolution (SOME ctxt) true brules i); |
150 fun match_tac rules = bimatch_tac (map (pair false) rules); |
150 fun match_tac ctxt rules = bimatch_tac ctxt (map (pair false) rules); |
151 fun ematch_tac rules = bimatch_tac (map (pair true) rules); |
151 fun ematch_tac ctxt rules = bimatch_tac ctxt (map (pair true) rules); |
152 fun dmatch_tac rls = ematch_tac (map make_elim rls); |
152 fun dmatch_tac ctxt rls = ematch_tac ctxt (map make_elim rls); |
153 |
153 |
154 (*Smash all flex-flex disagreement pairs in the proof state.*) |
154 (*Smash all flex-flex disagreement pairs in the proof state.*) |
155 fun flexflex_tac ctxt = PRIMSEQ (Thm.flexflex_rule (SOME ctxt)); |
155 fun flexflex_tac ctxt = PRIMSEQ (Thm.flexflex_rule (SOME ctxt)); |
156 |
156 |
157 (*Remove duplicate subgoals.*) |
157 (*Remove duplicate subgoals.*) |