Nominal/Ex/Foo2.thy
changeset 2592 98236fbd8aa6
parent 2591 35c570891a3a
child 2593 25dcb2b1329e
--- a/Nominal/Ex/Foo2.thy	Mon Nov 29 08:01:09 2010 +0000
+++ b/Nominal/Ex/Foo2.thy	Fri Dec 03 13:51:07 2010 +0000
@@ -64,7 +64,6 @@
   tests by cu
 *}
 
-
 lemma yy:
   assumes a: "p \<bullet> bs \<inter> bs = {}" 
   and     b: "finite bs"
@@ -100,6 +99,8 @@
 apply(simp add: mem_permute_iff)
 done
 
+
+
 lemma Abs_rename_set:
   fixes x::"'a::fs"
   assumes a: "(p \<bullet> bs) \<sharp>* (bs, x)" 
@@ -217,7 +218,7 @@
   fixes c::"'a::fs"
   assumes "\<exists>name. y = Var name \<Longrightarrow> P" 
   and     "\<exists>trm1 trm2. y = App trm1 trm2 \<Longrightarrow> P"
-  and     "\<exists>name trm. {atom name} \<sharp>* c \<and> y = Lam name trm \<Longrightarrow> P" 
+  and     "\<And>name trm. \<lbrakk>{atom name} \<sharp>* c; y = Lam name trm\<rbrakk> \<Longrightarrow> P" 
   and     "\<exists>a1 trm1 a2 trm2.  ((set (bn a1)) \<union> (set (bn a2))) \<sharp>* c \<and> y = Let1 a1 trm1 a2 trm2 \<Longrightarrow> P"
   and     "\<exists>x1 x2 trm1 trm2. {atom x1, atom x2} \<sharp>* c \<and> y = Let2 x1 x2 trm1 trm2 \<Longrightarrow> P"
   shows "P"
@@ -230,7 +231,6 @@
 apply(assumption)
 apply(subgoal_tac "\<exists>p. (p \<bullet> {atom name}) \<sharp>* (c, [atom name], trm)")
 apply(erule exE)
-apply(rule assms(3))
 apply(insert Abs_rename_list)[1]
 apply(drule_tac x="p" in meta_spec)
 apply(drule_tac x="[atom name]" in meta_spec)
@@ -239,12 +239,14 @@
 apply(drule meta_mp)
 apply(simp)
 apply(erule exE)
-apply(rule exI)+
+apply(rule assms(3))
 apply(perm_simp)
 apply(erule conjE)+
-apply(rule conjI)
 apply(assumption)
-apply(simp add: foo.eq_iff)
+apply(clarify)
+apply(simp (no_asm) add: foo.eq_iff)
+apply(perm_simp)
+apply(assumption)
 apply(rule at_set_avoiding1)
 apply(simp)
 apply(simp add: finite_supp)