Nominal/Abs.thy
changeset 1911 60b5c61d3de2
parent 1857 591cc76da570
child 1919 d96c48fd7316
--- 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) \<longrightarrow> (Abs as t1 = Abs bs s1 \<and>  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 \<sharp>* p"
+  shows "\<forall>a \<in> as. p \<bullet> a = a"
+using a by (simp add: fresh_star_def fresh_def supp_perm)
+
+lemma fresh_star_set_eq:
+  assumes a: "as \<sharp>* p"
+  shows "p \<bullet> 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 \<and>  Abs as t2 = Abs as s2) \<longrightarrow> Abs as (t1, t2) = Abs as (s1, s2)"
+  shows "(Abs as t1 = Abs bs s1 \<and>  Abs as t2 = Abs bs s2) \<longrightarrow> Abs as (t1, t2) = Abs bs (s1, s2)"
 apply(subst abs_eq_iff)
 apply(subst abs_eq_iff)
 apply(subst alphas_abs)