diff -r dd7490fdd998 -r e44551d067e6 Nominal/Ex/Let.thy --- a/Nominal/Ex/Let.thy Tue Dec 21 10:28:08 2010 +0000 +++ b/Nominal/Ex/Let.thy Wed Dec 22 09:13:25 2010 +0000 @@ -18,7 +18,6 @@ "bn ANil = []" | "bn (ACons x t as) = (atom x) # (bn as)" -thm at_set_avoiding2 thm trm_assn.fv_defs thm trm_assn.eq_iff thm trm_assn.bn_defs @@ -28,28 +27,8 @@ thm trm_assn.distinct thm trm_assn.supp thm trm_assn.fresh -thm trm_assn.exhaust[where y="t", no_vars] - -lemmas permute_bn = permute_bn_raw.simps[quot_lifted] - -lemma uu: - shows "alpha_bn as (permute_bn p as)" -apply(induct as rule: trm_assn.inducts(2)) -apply(auto)[4] -apply(simp add: permute_bn) -apply(simp add: trm_assn.eq_iff) -apply(simp add: permute_bn) -apply(simp add: trm_assn.eq_iff) -done - -lemma tt: - shows "(p \ bn as) = bn (permute_bn p as)" -apply(induct as rule: trm_assn.inducts(2)) -apply(auto)[4] -apply(simp add: permute_bn trm_assn.bn_defs) -apply(simp add: permute_bn trm_assn.bn_defs) -apply(simp add: atom_eqvt) -done +thm trm_assn.exhaust +thm trm_assn.strong_exhaust lemma strong_exhaust1: fixes c::"'a::fs" @@ -58,41 +37,18 @@ and "\name trm. \{atom name} \* c; y = Lam name trm\ \ P" and "\assn trm. \set (bn assn) \* c; y = Let assn trm\ \ P" shows "P" -apply(rule_tac y="y" in trm_assn.exhaust(1)) +apply(rule_tac y="y" in trm_assn.strong_exhaust(1)) apply(rule assms(1)) apply(assumption) apply(rule assms(2)) apply(assumption) -apply(subgoal_tac "\q. (q \ {atom name}) \* c \ supp (Lam name trm) \* q") -apply(erule exE) -apply(erule conjE) apply(rule assms(3)) -apply(perm_simp) +apply(assumption) apply(assumption) -apply(drule supp_perm_eq[symmetric]) -apply(simp) -apply(rule at_set_avoiding2) -apply(simp add: finite_supp) -apply(simp add: finite_supp) -apply(simp add: finite_supp) -apply(simp add: trm_assn.fresh fresh_star_def) -apply(subgoal_tac "\q. (q \ (set (bn assn))) \* (c::'a::fs) \ supp ([bn assn]lst.trm) \* q") -apply(erule exE) -apply(erule conjE) -apply(simp add: set_eqvt) -apply(subst (asm) tt) -apply(rule_tac assms(4)) -apply(simp) -apply(simp add: trm_assn.eq_iff) -apply(drule supp_perm_eq[symmetric]) -apply(simp) -apply(simp add: tt uu) -apply(rule at_set_avoiding2) -apply(simp add: finite_supp) -apply(simp add: finite_supp) -apply(simp add: finite_supp) -apply(simp add: Abs_fresh_star) -done +apply(rule assms(4)) +apply(assumption) +apply(assumption) +sorry lemma strong_exhaust2: