# HG changeset patch # User Cezary Kaliszyk # Date 1269511815 -3600 # Node ID 953403c5faa01990f2984cd51e660a2a393091de # Parent 06f44d498cef9d3d1c4b20435a1b376fc09dd2df Showed Let substitution. diff -r 06f44d498cef -r 953403c5faa0 Nominal/ExLet.thy --- a/Nominal/ExLet.thy Thu Mar 25 11:01:22 2010 +0100 +++ b/Nominal/ExLet.thy Thu Mar 25 11:10:15 2010 +0100 @@ -49,9 +49,11 @@ "permute_bn (p + q) a = permute_bn p (permute_bn q a)" oops -lemma Lt_subst: - "supp (Abs (bn lts) trm) \* q \ (Lt lts trm) = Lt (permute_bn q lts) (q \ trm)" - sorry +lemma permute_bn_alpha_bn: "alpha_bn lts (permute_bn q lts)" + apply(induct lts rule: trm_lts.inducts(2)) + apply(rule TrueI) + apply(simp_all add:test eqvts trm_lts.eq_iff) + done lemma perm_bn: "p \ bn l = bn(permute_bn p l)" @@ -60,6 +62,24 @@ apply(simp_all add:test eqvts) done +lemma Lt_subst: + "supp (Abs (bn lts) trm) \* q \ (Lt lts trm) = Lt (permute_bn q lts) (q \ trm)" + apply (simp only: trm_lts.eq_iff) + apply (rule_tac x="q" in exI) + apply (simp add: alphas) + apply (simp add: permute_bn_alpha_bn) + apply (simp add: perm_bn[symmetric]) + apply (simp add: eqvts[symmetric]) + apply (simp add: supp_Abs) + apply (simp add: trm_lts.supp) + apply (rule supp_perm_eq[symmetric]) + apply (subst supp_finite_atom_set) + apply (rule finite_Diff) + apply (simp add: finite_supp) + apply (assumption) + done + + lemma fin_bn: "finite (bn l)" apply(induct l rule: trm_lts.inducts(2))