Nominal/Ex/Foo1.thy
changeset 2630 8268b277d240
parent 2627 8a4c44cef353
child 2950 0911cb7bf696
--- a/Nominal/Ex/Foo1.thy	Tue Dec 28 00:20:50 2010 +0000
+++ b/Nominal/Ex/Foo1.thy	Tue Dec 28 19:51:25 2010 +0000
@@ -44,6 +44,7 @@
 thm foo.induct
 thm foo.inducts
 thm foo.exhaust
+thm foo.strong_induct
 thm foo.strong_exhaust
 thm foo.fv_defs
 thm foo.bn_defs
@@ -57,32 +58,6 @@
 thm foo.fresh
 thm foo.bn_finite
 
-lemma 
-  fixes t::trm
-  and   as::assg
-  and   as'::assg'
-  and   c::"'a::fs"
-  assumes a1: "\<And>x c. P1 c (Var x)"
-  and     a2: "\<And>t1 t2 c. \<lbrakk>\<And>d. P1 d t1; \<And>d. P1 d t2\<rbrakk> \<Longrightarrow> P1 c (App t1 t2)"
-  and     a3: "\<And>x t c. \<lbrakk>{atom x} \<sharp>* c; \<And>d. P1 d t\<rbrakk> \<Longrightarrow> P1 c (Lam x t)"
-  and     a4: "\<And>as t c. \<lbrakk>set (bn1 as) \<sharp>* c; \<And>d. P2 d as; \<And>d. P1 d t\<rbrakk> \<Longrightarrow> P1 c (Let1 as t)"
-  and     a5: "\<And>as t c. \<lbrakk>set (bn2 as) \<sharp>* c; \<And>d. P2 d as; \<And>d. P1 d t\<rbrakk> \<Longrightarrow> P1 c (Let2 as t)"
-  and     a6: "\<And>as t c. \<lbrakk>set (bn3 as) \<sharp>* c; \<And>d. P2 d as; \<And>d. P1 d t\<rbrakk> \<Longrightarrow> P1 c (Let3 as t)"
-  and     a7: "\<And>as' t c. \<lbrakk>(bn4 as') \<sharp>* c; \<And>d. P3 d as'; \<And>d. P1 d t\<rbrakk> \<Longrightarrow> P1 c (Let4 as' t)" 
-  and     a8: "\<And>x y t c. \<And>d. P1 d t \<Longrightarrow> P2 c (As x y t)"
-  and     a9: "\<And>c. P3 c (BNil)"
-  and     a10: "\<And>c a as. \<And>d. P3 d as \<Longrightarrow> P3 c (BAs a as)"
-  shows "P1 c t" "P2 c as" "P3 c as'"
-apply(raw_tactic {* Induction_Schema.induction_schema_tac @{context} @{thms assms} *})
-apply(rule_tac y="t" and c="c" in foo.strong_exhaust(1))
-apply(simp_all)[7]
-apply(rule_tac ya="as"in foo.strong_exhaust(2))
-apply(simp_all)[1]
-apply(rule_tac yb="as'" in foo.strong_exhaust(3))
-apply(simp_all)[2]
-apply(relation "measure (sum_case (size o snd) (sum_case (size o snd) (size o snd)))")
-apply(simp_all add: foo.size)
-done
 
 end