diff -r 3b6a70e73006 -r cc5d23547341 Nominal/Ex/Foo1.thy --- a/Nominal/Ex/Foo1.thy Wed Sep 29 09:47:26 2010 -0400 +++ b/Nominal/Ex/Foo1.thy Wed Sep 29 16:49:13 2010 -0400 @@ -157,26 +157,26 @@ lemma strong_exhaust1: fixes c::"'a::fs" - assumes "\name ca. \c = ca; y = Var name\ \ P" - and "\trm1 trm2 ca. \c = ca; y = App trm1 trm2\ \ P" - and "\name trm ca. \{atom name} \* ca; c = ca; y = Lam name trm\ \ P" - and "\assn trm ca. \set (bn1 assn) \* ca; c = ca; y = Let1 assn trm\ \ P" - and "\assn trm ca. \set (bn2 assn) \* ca; c = ca; y = Let2 assn trm\ \ P" - and "\assn trm ca. \set (bn3 assn) \* ca; c = ca; y = Let3 assn trm\ \ P" + assumes "\name. y = Var name \ P" + and "\trm1 trm2. y = App trm1 trm2 \ P" + and "\name trm. \{atom name} \* c; y = Lam name trm\ \ P" + and "\assn trm. \set (bn1 assn) \* c; y = Let1 assn trm\ \ P" + and "\assn trm. \set (bn2 assn) \* c; y = Let2 assn trm\ \ P" + and "\assn trm. \set (bn3 assn) \* c; y = Let3 assn trm\ \ P" shows "P" apply(rule_tac y="y" in foo.exhaust(1)) apply(rule assms(1)) -apply(auto)[2] +apply(assumption) apply(rule assms(2)) -apply(auto)[2] +apply(assumption) apply(subgoal_tac "\q. (q \ {atom name}) \* c \ supp (Lam name trm) \* q") apply(erule exE) apply(erule conjE) apply(rule assms(3)) apply(perm_simp) apply(assumption) -apply(rule refl) apply(drule supp_perm_eq[symmetric]) +apply(perm_simp) apply(simp) apply(rule at_set_avoiding2) apply(simp add: finite_supp) @@ -187,13 +187,10 @@ apply(erule exE) apply(erule conjE) apply(rule assms(4)) -apply(simp add: set_eqvt) -apply(simp add: tt1) -apply(rule refl) -apply(simp) +apply(perm_simp add: tt1) +apply(assumption) +apply(drule supp_perm_eq[symmetric]) apply(simp add: foo.eq_iff) -apply(drule supp_perm_eq[symmetric]) -apply(simp) apply(simp add: tt1 uu1) apply(rule at_set_avoiding2) apply(simp add: finite_supp) @@ -206,8 +203,6 @@ apply(rule assms(5)) apply(simp add: set_eqvt) apply(simp add: tt2) -apply(rule refl) -apply(simp) apply(simp add: foo.eq_iff) apply(drule supp_perm_eq[symmetric]) apply(simp) @@ -223,8 +218,6 @@ apply(rule assms(6)) apply(simp add: set_eqvt) apply(simp add: tt3) -apply(rule refl) -apply(simp) apply(simp add: foo.eq_iff) apply(drule supp_perm_eq[symmetric]) apply(simp) @@ -236,14 +229,12 @@ apply(simp add: Abs_fresh_star) done -thm foo.exhaust - lemma strong_exhaust2: - assumes "\x y t ca. \c = ca; as = As x y t\ \ P" + assumes "\x y t. as = As x y t \ P" shows "P" apply(rule_tac y="as" in foo.exhaust(2)) apply(rule assms(1)) -apply(auto)[2] +apply(assumption) done @@ -261,17 +252,11 @@ shows "P1 c t" "P2 c as" using assms apply(induction_schema) -apply(rule_tac y="t" in strong_exhaust1) -apply(blast) -apply(blast) -apply(blast) -apply(blast) -apply(blast) -apply(blast) +apply(rule_tac y="t" and c="c" in strong_exhaust1) +apply(simp_all)[6] apply(rule_tac as="as" in strong_exhaust2) -apply(blast) +apply(simp) apply(relation "measure (sum_case (\y. size (snd y)) (\z. size (snd z)))") -apply(auto)[1] apply(simp_all add: foo.size) done