Nominal/Nominal2_Base.thy
changeset 2611 3d101f2f817c
parent 2609 666ffc8a92a9
child 2614 0d7a1703fe28
equal deleted inserted replaced
2610:f5c7375ab465 2611:3d101f2f817c
  1408 lemma fresh_star_set:
  1408 lemma fresh_star_set:
  1409   fixes xs::"('a::fs) list"
  1409   fixes xs::"('a::fs) list"
  1410   shows "as \<sharp>* set xs \<longleftrightarrow> as \<sharp>* xs"
  1410   shows "as \<sharp>* set xs \<longleftrightarrow> as \<sharp>* xs"
  1411 unfolding fresh_star_def
  1411 unfolding fresh_star_def
  1412 by (simp add: fresh_set)
  1412 by (simp add: fresh_set)
       
  1413 
       
  1414 lemma fresh_star_singleton:
       
  1415   fixes a::"atom"
       
  1416   shows "as \<sharp>* {a} \<longleftrightarrow> as \<sharp>* a"
       
  1417   by (simp add: fresh_star_def fresh_finite_insert fresh_set_empty)
       
  1418 
       
  1419 lemma fresh_star_fset:
       
  1420   fixes xs::"('a::fs) list"
       
  1421   shows "as \<sharp>* fset S \<longleftrightarrow> as \<sharp>* S"
       
  1422 by (simp add: fresh_star_def fresh_def) 
  1413 
  1423 
  1414 lemma fresh_star_Un:
  1424 lemma fresh_star_Un:
  1415   shows "(as \<union> bs) \<sharp>* x = (as \<sharp>* x \<and> bs \<sharp>* x)"
  1425   shows "(as \<union> bs) \<sharp>* x = (as \<sharp>* x \<and> bs \<sharp>* x)"
  1416   by (auto simp add: fresh_star_def)
  1426   by (auto simp add: fresh_star_def)
  1417 
  1427 
  1698   hence "p \<bullet> a \<sharp> c \<and> supp x \<sharp>* p" using p2 by blast
  1708   hence "p \<bullet> a \<sharp> c \<and> supp x \<sharp>* p" using p2 by blast
  1699   then show "\<exists>p. (p \<bullet> a) \<sharp> c \<and> supp x \<sharp>* p" by blast
  1709   then show "\<exists>p. (p \<bullet> a) \<sharp> c \<and> supp x \<sharp>* p" by blast
  1700 qed
  1710 qed
  1701 
  1711 
  1702 section {* Renaming permutations *}
  1712 section {* Renaming permutations *}
  1703 
       
  1704 
  1713 
  1705 lemma set_renaming_perm:
  1714 lemma set_renaming_perm:
  1706   assumes a: "p \<bullet> bs \<inter> bs = {}" 
  1715   assumes a: "p \<bullet> bs \<inter> bs = {}" 
  1707   and     b: "finite bs"
  1716   and     b: "finite bs"
  1708   shows "\<exists>q. q \<bullet> bs = p \<bullet> bs \<and> supp q \<subseteq> bs \<union> (p \<bullet> bs)"
  1717   shows "\<exists>q. q \<bullet> bs = p \<bullet> bs \<and> supp q \<subseteq> bs \<union> (p \<bullet> bs)"
  1838 lemma fresh_atom_at_base: 
  1847 lemma fresh_atom_at_base: 
  1839   fixes b::"'a::at_base"
  1848   fixes b::"'a::at_base"
  1840   shows "a \<sharp> atom b \<longleftrightarrow> a \<sharp> b"
  1849   shows "a \<sharp> atom b \<longleftrightarrow> a \<sharp> b"
  1841   by (simp add: fresh_def supp_at_base supp_atom)
  1850   by (simp add: fresh_def supp_at_base supp_atom)
  1842 
  1851 
       
  1852 lemma fresh_star_atom_at_base: 
       
  1853   fixes b::"'a::at_base"
       
  1854   shows "as \<sharp>* atom b \<longleftrightarrow> as \<sharp>* b"
       
  1855   by (simp add: fresh_star_def fresh_atom_at_base)
  1843 
  1856 
  1844 instance at_base < fs
  1857 instance at_base < fs
  1845 proof qed (simp add: supp_at_base)
  1858 proof qed (simp add: supp_at_base)
  1846 
  1859 
  1847 lemma at_base_infinite [simp]:
  1860 lemma at_base_infinite [simp]: