equal
deleted
inserted
replaced
203 end; |
203 end; |
204 |
204 |
205 (*Duplication of hazardous rules, for complete provers*) |
205 (*Duplication of hazardous rules, for complete provers*) |
206 fun dup_intr th = zero_var_indexes (th RS classical); |
206 fun dup_intr th = zero_var_indexes (th RS classical); |
207 |
207 |
208 fun dup_elim th = th RSN (2, revcut_rl) |> assumption 2 |> Seq.hd |> |
208 fun dup_elim th = |
209 rule_by_tactic (TRYALL (etac revcut_rl)); |
209 th RSN (2, revcut_rl) |> assumption 2 |> Seq.hd |> |
|
210 rule_by_tactic (TRYALL (etac revcut_rl)) |
|
211 handle _ => error ("Bad format for elimination rule\n" ^ string_of_thm th); |
210 |
212 |
211 |
213 |
212 (**** Classical rule sets ****) |
214 (**** Classical rule sets ****) |
213 |
215 |
214 datatype claset = |
216 datatype claset = |
217 hazIs : thm list, (*unsafe introduction rules*) |
219 hazIs : thm list, (*unsafe introduction rules*) |
218 hazEs : thm list, (*unsafe elimination rules*) |
220 hazEs : thm list, (*unsafe elimination rules*) |
219 uwrapper : (int -> tactic) -> |
221 uwrapper : (int -> tactic) -> |
220 (int -> tactic), (*for transforming step_tac*) |
222 (int -> tactic), (*for transforming step_tac*) |
221 swrapper : (int -> tactic) -> |
223 swrapper : (int -> tactic) -> |
222 (int -> tactic), (*for transform. safe_step_tac*) |
224 (int -> tactic), (*for safe_step_tac*) |
223 safe0_netpair : netpair, (*nets for trivial cases*) |
225 safe0_netpair : netpair, (*nets for trivial cases*) |
224 safep_netpair : netpair, (*nets for >0 subgoals*) |
226 safep_netpair : netpair, (*nets for >0 subgoals*) |
225 haz_netpair : netpair, (*nets for unsafe rules*) |
227 haz_netpair : netpair, (*nets for unsafe rules*) |
226 dup_netpair : netpair}; (*nets for duplication*) |
228 dup_netpair : netpair}; (*nets for duplication*) |
227 |
229 |