src/CCL/CCL.thy
changeset 58971 8c9a319821b3
parent 58889 5b7a9633cfa8
child 58975 762ee71498fa
equal deleted inserted replaced
58965:a62cdcc5344b 58971:8c9a319821b3
   416   "~ lam x. f(x) [= true"
   416   "~ lam x. f(x) [= true"
   417   "~ false [= <a,b>"
   417   "~ false [= <a,b>"
   418   "~ <a,b> [= false"
   418   "~ <a,b> [= false"
   419   "~ false [= lam x. f(x)"
   419   "~ false [= lam x. f(x)"
   420   "~ lam x. f(x) [= false"
   420   "~ lam x. f(x) [= false"
   421   by (tactic {*
   421   by (rule notI, drule case_pocong, erule_tac [5] rev_mp, simp_all,
   422     REPEAT (rtac @{thm notI} 1 THEN
   422     (rule po_refl npo_lam_bot)+)+
   423       dtac @{thm case_pocong} 1 THEN
       
   424       etac @{thm rev_mp} 5 THEN
       
   425       ALLGOALS (simp_tac @{context}) THEN
       
   426       REPEAT (resolve_tac [@{thm po_refl}, @{thm npo_lam_bot}] 1)) *})
       
   427 
   423 
   428 lemmas npo_rls = npo_pair_lam npo_lam_pair npo_rls1
   424 lemmas npo_rls = npo_pair_lam npo_lam_pair npo_rls1
   429 
   425 
   430 
   426 
   431 subsection {* Coinduction for @{text "[="} *}
   427 subsection {* Coinduction for @{text "[="} *}
   474   "[|  <t,u> : R;  R <= EQgen(lfp(%x. EQgen(x) Un R Un EQ)) |] ==> t = u"
   470   "[|  <t,u> : R;  R <= EQgen(lfp(%x. EQgen(x) Un R Un EQ)) |] ==> t = u"
   475   apply (rule EQ_def [THEN def_coinduct3, THEN EQ_iff [THEN iffD2]])
   471   apply (rule EQ_def [THEN def_coinduct3, THEN EQ_iff [THEN iffD2]])
   476   apply (rule EQgen_mono | assumption)+
   472   apply (rule EQgen_mono | assumption)+
   477   done
   473   done
   478 
   474 
   479 ML {*
   475 method_setup eq_coinduct3 = {*
   480   fun eq_coinduct_tac ctxt s i = res_inst_tac ctxt [(("R", 0), s)] @{thm eq_coinduct} i
   476   Scan.lift Args.name >> (fn s => fn ctxt =>
   481   fun eq_coinduct3_tac ctxt s i = res_inst_tac ctxt [(("R", 0), s)] @{thm eq_coinduct3} i
   477     SIMPLE_METHOD' (res_inst_tac ctxt [(("R", 0), s)] @{thm eq_coinduct3}))
   482 *}
   478 *}
   483 
   479 
   484 
   480 
   485 subsection {* Untyped Case Analysis and Other Facts *}
   481 subsection {* Untyped Case Analysis and Other Facts *}
   486 
   482