Nominal/Abs.thy
changeset 1915 72cdd2af7eb4
parent 1911 60b5c61d3de2
child 1919 d96c48fd7316
equal deleted inserted replaced
1914:c50601bc617e 1915:72cdd2af7eb4
   421 apply(rule_tac p="p" in supp_perm_eq)
   421 apply(rule_tac p="p" in supp_perm_eq)
   422 apply(simp add: supp_abs)
   422 apply(simp add: supp_abs)
   423 apply(simp)
   423 apply(simp)
   424 done
   424 done
   425 
   425 
   426 
   426 lemma 
   427 
   427   fixes t1 s1::"'a::fs"
   428 (* support of concrete atom sets *)
   428   and   t2 s2::"'b::fs"
       
   429   shows "Abs as (t1, t2) = Abs bs (s1, s2) \<longrightarrow> (Abs as t1 = Abs bs s1 \<and>  Abs as t2 = Abs bs s2)"
       
   430 apply(subst abs_eq_iff)
       
   431 apply(subst alphas_abs)
       
   432 apply(subst alphas)
       
   433 apply(rule impI)
       
   434 apply(erule exE)
       
   435 apply(simp add: supp_Pair)
       
   436 apply(simp add: Un_Diff)
       
   437 apply(simp add: fresh_star_union)
       
   438 apply(erule conjE)+
       
   439 apply(rule conjI)
       
   440 apply(rule trans)
       
   441 apply(rule sym)
       
   442 apply(rule_tac p="p" in supp_perm_eq)
       
   443 apply(simp add: supp_abs)
       
   444 apply(simp)
       
   445 apply(rule trans)
       
   446 apply(rule sym)
       
   447 apply(rule_tac p="p" in supp_perm_eq)
       
   448 apply(simp add: supp_abs)
       
   449 apply(simp)
       
   450 done
       
   451 
       
   452 lemma fresh_star_eq:
       
   453   assumes a: "as \<sharp>* p"
       
   454   shows "\<forall>a \<in> as. p \<bullet> a = a"
       
   455 using a by (simp add: fresh_star_def fresh_def supp_perm)
       
   456 
       
   457 lemma fresh_star_set_eq:
       
   458   assumes a: "as \<sharp>* p"
       
   459   shows "p \<bullet> as = as"
       
   460 using a 
       
   461 apply(simp add: fresh_star_def fresh_def supp_perm permute_set_eq)
       
   462 apply(auto)
       
   463 by (metis permute_atom_def)
   429 
   464 
   430 lemma 
   465 lemma 
   431   fixes t1 s1::"'a::fs"
   466   fixes t1 s1::"'a::fs"
   432   and   t2 s2::"'b::fs"
   467   and   t2 s2::"'b::fs"
   433   assumes asm: "finite as"
   468   assumes asm: "finite as"
   434   shows "(Abs as t1 = Abs as s1 \<and>  Abs as t2 = Abs as s2) \<longrightarrow> Abs as (t1, t2) = Abs as (s1, s2)"
   469   shows "(Abs as t1 = Abs bs s1 \<and>  Abs as t2 = Abs bs s2) \<longrightarrow> Abs as (t1, t2) = Abs bs (s1, s2)"
   435 apply(subst abs_eq_iff)
   470 apply(subst abs_eq_iff)
   436 apply(subst abs_eq_iff)
   471 apply(subst abs_eq_iff)
   437 apply(subst alphas_abs)
   472 apply(subst alphas_abs)
   438 apply(subst alphas_abs)
   473 apply(subst alphas_abs)
   439 apply(subst alphas)
   474 apply(subst alphas)