diff -r 3641530002d6 -r 425b4c406d80 Nominal/Ex/CPS/CPS1_Plotkin.thy --- a/Nominal/Ex/CPS/CPS1_Plotkin.thy Sat Jun 09 19:48:19 2012 +0100 +++ b/Nominal/Ex/CPS/CPS1_Plotkin.thy Mon Jun 11 14:02:57 2012 +0100 @@ -14,7 +14,7 @@ apply (rule, perm_simp, rule, rule) apply (simp_all add: fresh_Pair_elim) apply (rule_tac y="x" in lt.exhaust) -apply (auto) +apply (auto)[3] apply (rule_tac x="name" and ?'a="name" in obtain_fresh) apply (simp_all add: fresh_at_base)[3] apply (rule_tac x="(lt1, lt2)" and ?'a="name" in obtain_fresh) @@ -28,11 +28,16 @@ apply(rule_tac s="[[atom ka]]lst. ka~ $ Lam x (CPS_sumC M)" in trans) apply (case_tac "k = ka") apply simp -apply(simp (no_asm) add: Abs1_eq_iff del:eqvts) -apply (simp del: eqvts add: lt.fresh fresh_at_base) +thm Abs1_eq_iff +apply(subst Abs1_eq_iff) +apply(auto)[2] +apply(rule disjI2) +apply(rule conjI) +apply(simp) +apply(rule conjI) apply (simp only: lt.perm_simps(1) lt.perm_simps(2) flip_def[symmetric] lt.eq_iff) apply (subst flip_at_base_simps(2)) -apply simp +apply(simp) apply (intro conjI refl) apply (rule flip_fresh_fresh[symmetric]) apply (simp_all add: lt.fresh) @@ -125,18 +130,15 @@ apply (rename_tac M N u K) apply (subgoal_tac "Lam n (M+ $ n~ $ K) = Lam u (M+ $ u~ $ K)") apply (simp only:) -apply (auto simp add: Abs1_eq_iff flip_def[symmetric] lt.fresh fresh_at_base flip_fresh_fresh[symmetric])[1] +apply (auto simp add: Abs1_eq_iff swap_fresh_fresh fresh_at_base)[1] apply (subgoal_tac "Lam m (Na* $ Lam n (m~ $ n~ $ Ka)) = Lam ma (Na* $ Lam na (ma~ $ na~ $ Ka))") apply (simp only:) -apply (simp add: Abs1_eq_iff flip_def[symmetric] lt.fresh fresh_at_base) -apply (subgoal_tac "Ka = (n \ na) \ Ka") -apply (subgoal_tac "Ka = (m \ ma) \ Ka") -apply (subgoal_tac "Ka = (n \ (m \ ma) \ na) \ Ka") +apply (simp add: Abs1_eq_iff swap_fresh_fresh fresh_at_base) +apply(simp_all add: flip_def[symmetric]) apply (case_tac "m = ma") apply simp_all -apply rule -apply (auto simp add: flip_fresh_fresh[symmetric]) -apply (metis flip_at_base_simps(3) flip_fresh_fresh permute_flip_at)+ +apply (case_tac "m = na") +apply(simp_all add: flip_fresh_fresh) done termination (eqvt) @@ -227,7 +229,7 @@ have "lt1* $ Lam b (lt2* $ Lam c (b~ $ c~ $ K)) \\<^isub>\\<^sup>* Lam b (lt2* $ Lam c (b~ $ c~ $ K)) $ lt1+" using * d e by simp also have "... \\<^isub>\\<^sup>* lt2* $ Lam c (lt1+ $ c~ $ K)" - by (rule evbeta', simp_all add: * d e, metis d(12) fresh_at_base) + by (rule evbeta')(simp_all add: * d e) also have "... \\<^isub>\\<^sup>* lt1 $ lt2 ; K" proof (cases "isValue lt2") assume f: "isValue lt2" have "lt2* $ Lam c (lt1+ $ c~ $ K) \\<^isub>\\<^sup>* Lam c (lt1+ $ c~ $ K) $ lt2+" using * d e f by simp