equal
deleted
inserted
replaced
203 let |
203 let |
204 fun mk_inj_lemmas r = [@{thm arg_cong}] RL [r RS (r RS @{thm eq_lemma})] |
204 fun mk_inj_lemmas r = [@{thm arg_cong}] RL [r RS (r RS @{thm eq_lemma})] |
205 val inj_lemmas = maps mk_inj_lemmas rews |
205 val inj_lemmas = maps mk_inj_lemmas rews |
206 in |
206 in |
207 CHANGED (REPEAT (ares_tac [@{thm iffI}, @{thm allI}, @{thm conjI}] i ORELSE |
207 CHANGED (REPEAT (ares_tac [@{thm iffI}, @{thm allI}, @{thm conjI}] i ORELSE |
208 eresolve_tac inj_lemmas i ORELSE |
208 eresolve_tac ctxt inj_lemmas i ORELSE |
209 asm_simp_tac (ctxt addsimps rews) i)) |
209 asm_simp_tac (ctxt addsimps rews) i)) |
210 end; |
210 end; |
211 *} |
211 *} |
212 |
212 |
213 method_setup inj_rl = {* |
213 method_setup inj_rl = {* |
265 |
265 |
266 val ccl_dstncts = |
266 val ccl_dstncts = |
267 let |
267 let |
268 fun mk_raw_dstnct_thm rls s = |
268 fun mk_raw_dstnct_thm rls s = |
269 Goal.prove_global @{theory} [] [] (Syntax.read_prop_global @{theory} s) |
269 Goal.prove_global @{theory} [] [] (Syntax.read_prop_global @{theory} s) |
270 (fn _ => rtac @{thm notI} 1 THEN eresolve_tac rls 1) |
270 (fn {context = ctxt, ...} => rtac @{thm notI} 1 THEN eresolve_tac ctxt rls 1) |
271 in map (mk_raw_dstnct_thm caseB_lemmas) |
271 in map (mk_raw_dstnct_thm caseB_lemmas) |
272 (mk_dstnct_rls @{theory} ["bot","true","false","pair","lambda"]) end |
272 (mk_dstnct_rls @{theory} ["bot","true","false","pair","lambda"]) end |
273 |
273 |
274 fun mk_dstnct_thms ctxt defs inj_rls xs = |
274 fun mk_dstnct_thms ctxt defs inj_rls xs = |
275 let |
275 let |