equal
deleted
inserted
replaced
19 val eresolve0_tac: thm list -> int -> tactic |
19 val eresolve0_tac: thm list -> int -> tactic |
20 val eresolve_tac: Proof.context -> thm list -> int -> tactic |
20 val eresolve_tac: Proof.context -> thm list -> int -> tactic |
21 val forward_tac: Proof.context -> thm list -> int -> tactic |
21 val forward_tac: Proof.context -> thm list -> int -> tactic |
22 val dresolve0_tac: thm list -> int -> tactic |
22 val dresolve0_tac: thm list -> int -> tactic |
23 val dresolve_tac: Proof.context -> thm list -> int -> tactic |
23 val dresolve_tac: Proof.context -> thm list -> int -> tactic |
24 val atac: int -> tactic |
|
25 val rtac: thm -> int -> tactic |
|
26 val dtac: thm -> int -> tactic |
|
27 val etac: thm -> int -> tactic |
|
28 val ares_tac: Proof.context -> thm list -> int -> tactic |
24 val ares_tac: Proof.context -> thm list -> int -> tactic |
29 val solve_tac: Proof.context -> thm list -> int -> tactic |
25 val solve_tac: Proof.context -> thm list -> int -> tactic |
30 val bimatch_tac: Proof.context -> (bool * thm) list -> int -> tactic |
26 val bimatch_tac: Proof.context -> (bool * thm) list -> int -> tactic |
31 val match_tac: Proof.context -> thm list -> int -> tactic |
27 val match_tac: Proof.context -> thm list -> int -> tactic |
32 val ematch_tac: Proof.context -> thm list -> int -> tactic |
28 val ematch_tac: Proof.context -> thm list -> int -> tactic |
97 (*** The following fail if the goal number is out of range: |
93 (*** The following fail if the goal number is out of range: |
98 thus (REPEAT (resolve_tac rules i)) stops once subgoal i disappears. *) |
94 thus (REPEAT (resolve_tac rules i)) stops once subgoal i disappears. *) |
99 |
95 |
100 (*Solve subgoal i by assumption*) |
96 (*Solve subgoal i by assumption*) |
101 fun assume_tac ctxt i = PRIMSEQ (Thm.assumption (SOME ctxt) i); |
97 fun assume_tac ctxt i = PRIMSEQ (Thm.assumption (SOME ctxt) i); |
102 fun atac i = PRIMSEQ (Thm.assumption NONE i); |
|
103 |
98 |
104 (*Solve subgoal i by assumption, using no unification*) |
99 (*Solve subgoal i by assumption, using no unification*) |
105 fun eq_assume_tac i = PRIMITIVE (Thm.eq_assumption i); |
100 fun eq_assume_tac i = PRIMITIVE (Thm.eq_assumption i); |
106 |
101 |
107 |
102 |
132 fun forward_tac ctxt rls = resolve_tac ctxt (map make_elim rls) THEN' assume_tac ctxt; |
127 fun forward_tac ctxt rls = resolve_tac ctxt (map make_elim rls) THEN' assume_tac ctxt; |
133 |
128 |
134 (*Like forward_tac, but deletes the assumption after use.*) |
129 (*Like forward_tac, but deletes the assumption after use.*) |
135 fun dresolve0_tac rls = eresolve0_tac (map make_elim rls); |
130 fun dresolve0_tac rls = eresolve0_tac (map make_elim rls); |
136 fun dresolve_tac ctxt rls = eresolve_tac ctxt (map make_elim rls); |
131 fun dresolve_tac ctxt rls = eresolve_tac ctxt (map make_elim rls); |
137 |
|
138 (*Shorthand versions: for resolution with a single theorem*) |
|
139 fun rtac rl = resolve0_tac [rl]; |
|
140 fun dtac rl = dresolve0_tac [rl]; |
|
141 fun etac rl = eresolve0_tac [rl]; |
|
142 |
132 |
143 (*Use an assumption or some rules*) |
133 (*Use an assumption or some rules*) |
144 fun ares_tac ctxt rules = assume_tac ctxt ORELSE' resolve_tac ctxt rules; |
134 fun ares_tac ctxt rules = assume_tac ctxt ORELSE' resolve_tac ctxt rules; |
145 |
135 |
146 fun solve_tac ctxt rules = resolve_tac ctxt rules THEN_ALL_NEW assume_tac ctxt; |
136 fun solve_tac ctxt rules = resolve_tac ctxt rules THEN_ALL_NEW assume_tac ctxt; |