diff -r 89158f401b07 -r e5d9b6bca88c Nominal/Nominal2_Base.thy --- a/Nominal/Nominal2_Base.thy Fri Apr 19 00:10:52 2013 +0100 +++ b/Nominal/Nominal2_Base.thy Tue Jun 04 09:39:23 2013 +0100 @@ -354,7 +354,6 @@ unfolding permute_atom_def by (metis Rep_perm_ext ext) - subsection {* Permutations for permutations *} instantiation perm :: pt @@ -1001,6 +1000,11 @@ shows "p \ (A \ B) = (p \ A) \ (p \ B)" unfolding Un_def by simp +lemma UNION_eqvt [eqvt]: + shows "p \ (UNION A f) = (UNION (p \ A) (p \ f))" +unfolding UNION_eq +by (perm_simp) (simp) + lemma Diff_eqvt [eqvt]: fixes A B :: "'a::pt set" shows "p \ (A - B) = (p \ A) - (p \ B)" @@ -1603,6 +1607,17 @@ by blast qed +lemma perm_eq_iff2: + fixes p q :: "perm" + shows "p = q \ (\a::atom \ supp p \ supp q. p \ a = q \ a)" + unfolding perm_eq_iff + apply(auto) + apply(case_tac "a \ p \ a \ q") + apply(simp add: fresh_perm) + apply(simp add: fresh_def) + done + + instance perm :: fs by default (simp add: supp_perm finite_perm_lemma) @@ -2017,15 +2032,13 @@ assumes fin: "finite S" shows "(\x\S. supp x) \ supp S" proof - - have eqvt: "eqvt (\S. \ supp ` S)" - unfolding eqvt_def - by (perm_simp) (simp) + have eqvt: "eqvt (\S. \x \ S. supp x)" + unfolding eqvt_def by simp have "(\x\S. supp x) = supp (\x\S. supp x)" by (rule supp_finite_atom_set[symmetric]) (rule Union_of_finite_supp_sets[OF fin]) - also have "\ = supp ((\S. \ supp ` S) S)" by simp also have "\ \ supp S" using eqvt by (rule supp_fun_app_eqvt) - finally show "(\x\S. supp x) \ supp S" . + finally show "(\x\S. supp x) \ supp S" . qed lemma supp_of_finite_sets: