Something is wrong with the statement of strong induction for TySch, as the All case is trivial and Fun case unprovable...
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Fri, 19 Mar 2010 09:03:10 +0100
changeset 1537 0b21101157b1
parent 1534 984ea1299cd7
child 1538 6853ce305118
Something is wrong with the statement of strong induction for TySch, as the All case is trivial and Fun case unprovable...
Nominal/TySch.thy
--- a/Nominal/TySch.thy	Fri Mar 19 08:31:43 2010 +0100
+++ b/Nominal/TySch.thy	Fri Mar 19 09:03:10 2010 +0100
@@ -59,12 +59,20 @@
 lemmas t_tyS_supp = t_tyS.fv[simplified supp_fv_t_tyS]
 
 lemma induct:
-"\<lbrakk>\<And>name b. P b (Var name);
-  \<And>t1 t2 b. \<lbrakk>\<And>c. P c t1; \<And>c. P c t2\<rbrakk> \<Longrightarrow> P b (Fun t1 t2);
-  \<And>fset t. \<lbrakk>\<And>c. P c t; fset_to_set (fmap atom fset) \<sharp>* b\<rbrakk> \<Longrightarrow> P' b (All fset t)
- \<rbrakk> \<Longrightarrow> P a t"
-  oops
-
+  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"
+proof -
+  have "\<And>p. P a (p \<bullet> t)"
+    apply (induct t rule: t_tyS.inducts(1))
+    apply (simp add: a1)
+    apply (simp_all)
+    apply (rule_tac ?t1.0="p \<bullet> t1" and ?t2.0="p \<bullet> t2" in a2)
+    sorry
+  then have "P a (0 \<bullet> t)" by blast
+  then show "P a t" by simp
+qed
 
 lemma
   shows "All {|a, b|} (Fun (Var a) (Var b)) = All {|b, a|} (Fun (Var a) (Var b))"