Nominal/Nominal2_Eqvt.thy
changeset 2642 f338b455314c
parent 2635 64b4cb2c2bf8
child 2651 4aa72a88b2c1
equal deleted inserted replaced
2641:592d17e26e09 2642:f338b455314c
   230 lemma map_eqvt[eqvt]: 
   230 lemma map_eqvt[eqvt]: 
   231   shows "p \<bullet> (map f xs) = map (p \<bullet> f) (p \<bullet> xs)"
   231   shows "p \<bullet> (map f xs) = map (p \<bullet> f) (p \<bullet> xs)"
   232   by (induct xs) (simp_all, simp only: permute_fun_app_eq)
   232   by (induct xs) (simp_all, simp only: permute_fun_app_eq)
   233 
   233 
   234 
   234 
   235 subsection {* Equivariance for fsets *} 
   235 subsection {* Equivariance Finite-Set Operations *}
       
   236 
       
   237 lemma in_fset_eqvt[eqvt]:
       
   238   shows "(p \<bullet> (x |\<in>| S)) = ((p \<bullet> x) |\<in>| (p \<bullet> S))"
       
   239 unfolding in_fset
       
   240 by (perm_simp) (simp)
       
   241 
       
   242 lemma union_fset_eqvt[eqvt]:
       
   243   shows "(p \<bullet> (S |\<union>| T)) = ((p \<bullet> S) |\<union>| (p \<bullet> T))"
       
   244 by (induct S) (simp_all)
       
   245 
       
   246 lemma supp_union_fset:
       
   247   fixes S T::"'a::fs fset"
       
   248   shows "supp (S |\<union>| T) = supp S \<union> supp T"
       
   249 by (induct S) (auto)
       
   250 
       
   251 lemma fresh_union_fset:
       
   252   fixes S T::"'a::fs fset"
       
   253   shows "a \<sharp> S |\<union>| T \<longleftrightarrow> a \<sharp> S \<and> a \<sharp> T"
       
   254 unfolding fresh_def
       
   255 by (simp add: supp_union_fset)
   236 
   256 
   237 lemma map_fset_eqvt[eqvt]: 
   257 lemma map_fset_eqvt[eqvt]: 
   238   shows "p \<bullet> (map_fset f S) = map_fset (p \<bullet> f) (p \<bullet> S)"
   258   shows "p \<bullet> (map_fset f S) = map_fset (p \<bullet> f) (p \<bullet> S)"
   239   by (lifting map_eqvt)
   259   by (lifting map_eqvt)
   240 
   260