src/CCL/Type.thy
changeset 26342 0f65fa163304
parent 24825 c4f13ab78f9d
child 28272 ed959a0f650b
equal deleted inserted replaced
26341:2f5a4367a39e 26342:0f65fa163304
   395 
   395 
   396 local
   396 local
   397   val lfpI = thm "lfpI"
   397   val lfpI = thm "lfpI"
   398   val coinduct3_mono_lemma = thm "coinduct3_mono_lemma"
   398   val coinduct3_mono_lemma = thm "coinduct3_mono_lemma"
   399   fun mk_thm s = prove_goal (the_context ()) s (fn mono::prems =>
   399   fun mk_thm s = prove_goal (the_context ()) s (fn mono::prems =>
   400        [fast_tac (claset () addIs ((mono RS coinduct3_mono_lemma RS lfpI)::prems)) 1])
   400        [fast_tac (@{claset} addIs ((mono RS coinduct3_mono_lemma RS lfpI)::prems)) 1])
   401 in
   401 in
   402 val ci3_RI    = mk_thm "[|  mono(Agen);  a : R |] ==> a : lfp(%x. Agen(x) Un R Un A)"
   402 val ci3_RI    = mk_thm "[|  mono(Agen);  a : R |] ==> a : lfp(%x. Agen(x) Un R Un A)"
   403 val ci3_AgenI = mk_thm "[|  mono(Agen);  a : Agen(lfp(%x. Agen(x) Un R Un A)) |] ==> a : lfp(%x. Agen(x) Un R Un A)"
   403 val ci3_AgenI = mk_thm "[|  mono(Agen);  a : Agen(lfp(%x. Agen(x) Un R Un A)) |] ==> a : lfp(%x. Agen(x) Un R Un A)"
   404 val ci3_AI    = mk_thm "[|  mono(Agen);  a : A |] ==> a : lfp(%x. Agen(x) Un R Un A)"
   404 val ci3_AI    = mk_thm "[|  mono(Agen);  a : A |] ==> a : lfp(%x. Agen(x) Un R Un A)"
   405 
   405 
   406 fun mk_genIs thy defs genXH gen_mono s = prove_goalw thy defs s
   406 fun mk_genIs thy defs genXH gen_mono s = prove_goalw thy defs s
   407       (fn prems => [rtac (genXH RS iffD2) 1,
   407       (fn prems => [rtac (genXH RS iffD2) 1,
   408                     simp_tac (simpset ()) 1,
   408                     SIMPSET' simp_tac 1,
   409                     TRY (fast_tac (claset () addIs
   409                     TRY (fast_tac (@{claset} addIs
   410                             ([genXH RS iffD2,gen_mono RS coinduct3_mono_lemma RS lfpI]
   410                             ([genXH RS iffD2,gen_mono RS coinduct3_mono_lemma RS lfpI]
   411                              @ prems)) 1)])
   411                              @ prems)) 1)])
   412 end;
   412 end;
   413 
   413 
   414 bind_thm ("ci3_RI", ci3_RI);
   414 bind_thm ("ci3_RI", ci3_RI);