src/CCL/Type.thy
changeset 60754 02924903a6fd
parent 59499 14095f771781
child 60770 240563fbf41d
equal deleted inserted replaced
60753:80ca4a065a48 60754:02924903a6fd
   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 *}