equal
deleted
inserted
replaced
396 lemma ci3_AI: "\<lbrakk>mono(Agen); a : A\<rbrakk> \<Longrightarrow> a : lfp(\<lambda>x. Agen(x) Un R Un A)" |
396 lemma ci3_AI: "\<lbrakk>mono(Agen); a : A\<rbrakk> \<Longrightarrow> a : lfp(\<lambda>x. Agen(x) Un R Un A)" |
397 by coinduct3 |
397 by coinduct3 |
398 |
398 |
399 ML {* |
399 ML {* |
400 fun genIs_tac ctxt genXH gen_mono = |
400 fun genIs_tac ctxt genXH gen_mono = |
401 rtac (genXH RS @{thm iffD2}) THEN' |
401 resolve_tac ctxt [genXH RS @{thm iffD2}] THEN' |
402 simp_tac ctxt THEN' |
402 simp_tac ctxt THEN' |
403 TRY o fast_tac |
403 TRY o fast_tac |
404 (ctxt addIs [genXH RS @{thm iffD2}, gen_mono RS @{thm coinduct3_mono_lemma} RS @{thm lfpI}]) |
404 (ctxt addIs [genXH RS @{thm iffD2}, gen_mono RS @{thm coinduct3_mono_lemma} RS @{thm lfpI}]) |
405 *} |
405 *} |
406 |
406 |
434 unfolding data_defs by (genIs POgenXH POgen_mono)+ |
434 unfolding data_defs by (genIs POgenXH POgen_mono)+ |
435 |
435 |
436 ML {* |
436 ML {* |
437 fun POgen_tac ctxt (rla, rlb) i = |
437 fun POgen_tac ctxt (rla, rlb) i = |
438 SELECT_GOAL (safe_tac ctxt) i THEN |
438 SELECT_GOAL (safe_tac ctxt) i THEN |
439 rtac (rlb RS (rla RS @{thm ssubst_pair})) i THEN |
439 resolve_tac ctxt [rlb RS (rla RS @{thm ssubst_pair})] i THEN |
440 (REPEAT (resolve_tac ctxt |
440 (REPEAT (resolve_tac ctxt |
441 (@{thms POgenIs} @ [@{thm PO_refl} RS (@{thm POgen_mono} RS @{thm ci3_AI})] @ |
441 (@{thms POgenIs} @ [@{thm PO_refl} RS (@{thm POgen_mono} RS @{thm ci3_AI})] @ |
442 (@{thms POgenIs} RL [@{thm POgen_mono} RS @{thm ci3_AgenI}]) @ |
442 (@{thms POgenIs} RL [@{thm POgen_mono} RS @{thm ci3_AgenI}]) @ |
443 [@{thm POgen_mono} RS @{thm ci3_RI}]) i)) |
443 [@{thm POgen_mono} RS @{thm ci3_RI}]) i)) |
444 *} |
444 *} |