diff -r 57891245370d -r 60b5c61d3de2 Nominal/Abs.thy --- a/Nominal/Abs.thy Tue Apr 20 11:29:00 2010 +0200 +++ b/Nominal/Abs.thy Tue Apr 20 18:24:50 2010 +0200 @@ -423,15 +423,50 @@ apply(simp) done - +lemma + fixes t1 s1::"'a::fs" + and t2 s2::"'b::fs" + shows "Abs as (t1, t2) = Abs bs (s1, s2) \ (Abs as t1 = Abs bs s1 \ Abs as t2 = Abs bs s2)" +apply(subst abs_eq_iff) +apply(subst alphas_abs) +apply(subst alphas) +apply(rule impI) +apply(erule exE) +apply(simp add: supp_Pair) +apply(simp add: Un_Diff) +apply(simp add: fresh_star_union) +apply(erule conjE)+ +apply(rule conjI) +apply(rule trans) +apply(rule sym) +apply(rule_tac p="p" in supp_perm_eq) +apply(simp add: supp_abs) +apply(simp) +apply(rule trans) +apply(rule sym) +apply(rule_tac p="p" in supp_perm_eq) +apply(simp add: supp_abs) +apply(simp) +done -(* support of concrete atom sets *) +lemma fresh_star_eq: + assumes a: "as \* p" + shows "\a \ as. p \ a = a" +using a by (simp add: fresh_star_def fresh_def supp_perm) + +lemma fresh_star_set_eq: + assumes a: "as \* p" + shows "p \ as = as" +using a +apply(simp add: fresh_star_def fresh_def supp_perm permute_set_eq) +apply(auto) +by (metis permute_atom_def) lemma fixes t1 s1::"'a::fs" and t2 s2::"'b::fs" assumes asm: "finite as" - shows "(Abs as t1 = Abs as s1 \ Abs as t2 = Abs as s2) \ Abs as (t1, t2) = Abs as (s1, s2)" + shows "(Abs as t1 = Abs bs s1 \ Abs as t2 = Abs bs s2) \ Abs as (t1, t2) = Abs bs (s1, s2)" apply(subst abs_eq_iff) apply(subst abs_eq_iff) apply(subst alphas_abs)