diff -r 984ea1299cd7 -r 0b21101157b1 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: -"\\name b. P b (Var name); - \t1 t2 b. \\c. P c t1; \c. P c t2\ \ P b (Fun t1 t2); - \fset t. \\c. P c t; fset_to_set (fmap atom fset) \* b\ \ P' b (All fset t) - \ \ P a t" - oops - + assumes a1: "\name b. P b (Var name)" + and a2: "\t1 t2 b. \\c. P c t1; \c. P c t2\ \ P b (Fun t1 t2)" + and a3: "\fset t. \\c. P c t; fset_to_set (fmap atom fset) \* b\ \ P' b (All fset t)" + shows "P a t" +proof - + have "\p. P a (p \ t)" + apply (induct t rule: t_tyS.inducts(1)) + apply (simp add: a1) + apply (simp_all) + apply (rule_tac ?t1.0="p \ t1" and ?t2.0="p \ t2" in a2) + sorry + then have "P a (0 \ 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))"