Working on TySch strong induction.
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Fri, 19 Mar 2010 09:31:38 +0100
changeset 1538 6853ce305118
parent 1537 0b21101157b1
child 1539 78d0adf8a086
Working on TySch strong induction.
Nominal/TySch.thy
--- a/Nominal/TySch.thy	Fri Mar 19 09:03:10 2010 +0100
+++ b/Nominal/TySch.thy	Fri Mar 19 09:31:38 2010 +0100
@@ -61,17 +61,22 @@
 lemma induct:
   assumes a1: "\<And>name b. P b (Var name)"
   and     a2: "\<And>t1 t2 b. \<lbrakk>\<And>c. P c t1; \<And>c. P c t2\<rbrakk> \<Longrightarrow> P b (Fun t1 t2)"
-  and     a3: "\<And>fset t. \<lbrakk>\<And>c. P c t; fset_to_set (fmap atom fset) \<sharp>* b\<rbrakk> \<Longrightarrow> P' b (All fset t)"
-  shows "P a t"
+  and     a3: "\<And>fset t b. \<lbrakk>\<And>c. P c t; fset_to_set (fmap atom fset) \<sharp>* b\<rbrakk> \<Longrightarrow> P' b (All fset t)"
+  shows "P a t \<and> P' d ts "
 proof -
-  have "\<And>p. P a (p \<bullet> t)"
-    apply (induct t rule: t_tyS.inducts(1))
+  have " (\<forall>p. P a (p \<bullet> t)) \<and> (\<forall>p. P' d (p \<bullet> ts))"
+    apply (rule t_tyS.induct)
     apply (simp add: a1)
     apply (simp_all)
-    apply (rule_tac ?t1.0="p \<bullet> t1" and ?t2.0="p \<bullet> t2" in a2)
+    apply (rule allI)
+    apply (rule a2)
+    defer defer
+    apply (rule allI)
+    apply (rule a3)
+    apply simp_all
     sorry
-  then have "P a (0 \<bullet> t)" by blast
-  then show "P a t" by simp
+  then have "P a (0 \<bullet> t) \<and> P' d (0 \<bullet> ts)" by blast
+  then show ?thesis by simp
 qed
 
 lemma