added a lemma about fresh_star and Abs
authorChristian Urban <urbanc@in.tum.de>
Thu, 24 Feb 2011 16:26:11 +0000
changeset 2730 eebc24b9cf39
parent 2725 fafc461bdb9e
child 2731 c263bbb89dde
added a lemma about fresh_star and Abs
Nominal/Ex/TypeVarsTest.thy
Nominal/Nominal2_Abs.thy
Nominal/Nominal2_Base.thy
--- a/Nominal/Ex/TypeVarsTest.thy	Wed Feb 16 14:44:33 2011 +0000
+++ b/Nominal/Ex/TypeVarsTest.thy	Thu Feb 24 16:26:11 2011 +0000
@@ -38,6 +38,12 @@
 thm lam.fv_bn_eqvt
 thm lam.size_eqvt
 
+(* FIXME: only works for type variables 'a 'b 'c *)
+
+nominal_datatype ('a, 'b, 'c) psi =
+  PsiNil
+| Output "'a" "'a" "('a, 'b, 'c) psi" 
+
 
 end
 
--- a/Nominal/Nominal2_Abs.thy	Wed Feb 16 14:44:33 2011 +0000
+++ b/Nominal/Nominal2_Abs.thy	Thu Feb 24 16:26:11 2011 +0000
@@ -768,6 +768,15 @@
   unfolding fresh_star_def
   by(auto simp add: Abs_fresh_iff)
 
+lemma Abs_fresh_star2:
+  fixes x::"'a::fs"
+  shows "as \<inter> bs = {} \<Longrightarrow> as \<sharp>* Abs_set bs x \<longleftrightarrow> as \<sharp>* x"
+  and   "as \<inter> bs = {} \<Longrightarrow> as \<sharp>* Abs_res bs x \<longleftrightarrow> as \<sharp>* x"
+  and   "cs \<inter> set ds = {} \<Longrightarrow> cs \<sharp>* Abs_lst ds x \<longleftrightarrow> cs \<sharp>* x"
+  unfolding fresh_star_def Abs_fresh_iff
+  by auto
+
+
 lemma Abs1_eq:
   fixes x::"'a::fs"
   shows "Abs_set {a} x = Abs_set {a} y \<longleftrightarrow> x = y"
--- a/Nominal/Nominal2_Base.thy	Wed Feb 16 14:44:33 2011 +0000
+++ b/Nominal/Nominal2_Base.thy	Thu Feb 24 16:26:11 2011 +0000
@@ -1654,7 +1654,6 @@
 done
 
 lemma fresh_star_atom_set_conv:
-  fixes p::"perm"
   assumes fresh: "as \<sharp>* bs"
   and     fin: "finite as" "finite bs"
   shows "bs \<sharp>* as"
@@ -1662,6 +1661,13 @@
 unfolding fresh_star_def fresh_def
 by (auto simp add: supp_finite_atom_set fin)
 
+lemma atom_fresh_star_disjoint:
+  assumes fin: "finite bs" 
+  shows "as \<sharp>* bs \<longleftrightarrow> (as \<inter> bs = {})"
+
+unfolding fresh_star_def fresh_def
+by (auto simp add: supp_finite_atom_set fin)
+
 
 lemma fresh_star_Pair:
   shows "as \<sharp>* (x, y) = (as \<sharp>* x \<and> as \<sharp>* y)" 
@@ -1747,14 +1753,6 @@
 apply(simp add: imp_eqvt fresh_eqvt mem_eqvt)
 done
 
-lemma at_fresh_star_inter:
-  assumes a: "(p \<bullet> bs) \<sharp>* bs" 
-  and     b: "finite bs"
-  shows "p \<bullet> bs \<inter> bs = {}"
-using a b
-unfolding fresh_star_def
-unfolding fresh_def
-by (auto simp add: supp_finite_atom_set)
 
 
 section {* Induction principle for permutations *}