diff -r 7dc4fc25de8d -r fd8f152cfc76 src/HOL/Nominal/Examples/Lam_substs.thy --- a/src/HOL/Nominal/Examples/Lam_substs.thy Wed Mar 01 10:28:39 2006 +0100 +++ b/src/HOL/Nominal/Examples/Lam_substs.thy Wed Mar 01 10:37:00 2006 +0100 @@ -192,7 +192,6 @@ shows "(t,y')\rec f1 f2 f3" using a b by simp - lemma rec_prm_equiv: fixes f1 ::"('a::pt_name) f1_ty" and f2 ::"('a::pt_name) f2_ty" @@ -268,6 +267,7 @@ thus ?case using a1' a2 by (force intro: rec.r3 rec_trans) qed + lemma rec_perm: fixes f1 ::"('a::pt_name) f1_ty" and f2 ::"('a::pt_name) f2_ty" @@ -640,6 +640,13 @@ apply(rule c) done +lemma rfun'_equiv_aux: + fixes pi::"name prm" + assumes f: "finite ((supp (f1,f2,f3))::name set)" + and c: "\(a::name). a\f3 \ (\(y::'a::pt_name). a\f3 a y)" + shows "pi\(rfun' f1 f2 f3 t pi') = (pi\rfun' f1 f2 f3 t) (pi\pi')" +by (simp add: perm_app) + lemma rfun'_supports: fixes f1::"('a::pt_name) f1_ty" and f2::"('a::pt_name) f2_ty" @@ -793,7 +800,7 @@ qed let ?g = "(\a'. f3 a' (rfun' f1 f2 f3 t ([]@[(a,a')])))" have a0: "((supp (f3,a,([]::name prm),rfun' f1 f2 f3 t))::name set) supports ?g" - by (supports_simp add: perm_append) + by (supports_simp add: perm_append rfun'_equiv_aux[OF f, OF c]) have a1: "finite ((supp (f3,a,([]::name prm),rfun' f1 f2 f3 t))::name set)" using f' by (simp add: supp_prod fs_name1 rfun'_finite_supp[OF f, OF c]) from a0 a1 have a2: "finite ((supp ?g)::name set)"