# HG changeset patch # User Christian Urban # Date 1267538735 -3600 # Node ID 61319a9af976687f7ae2ac6c4178ae7eb428eb76 # Parent cbcd4997dac54b9adcf0930e9e97d7db607e4df9 updated (added lemma about commuting permutations) diff -r cbcd4997dac5 -r 61319a9af976 Nominal/Nominal2_Base.thy --- a/Nominal/Nominal2_Base.thy Tue Mar 02 08:58:28 2010 +0100 +++ b/Nominal/Nominal2_Base.thy Tue Mar 02 15:05:35 2010 +0100 @@ -889,6 +889,37 @@ instance perm :: fs by default (simp add: supp_perm finite_perm_lemma) +lemma plus_perm_eq: + fixes p q::"perm" + assumes asm: "supp p \ supp q = {}" + shows "p + q = q + p" +unfolding expand_perm_eq +proof + fix a::"atom" + show "(p + q) \ a = (q + p) \ a" + proof - + { assume "a \ supp p" "a \ supp q" + then have "(p + q) \ a = (q + p) \ a" + by (simp add: supp_perm) + } + moreover + { assume a: "a \ supp p" "a \ supp q" + then have "p \ a \ supp p" by (simp add: supp_perm) + then have "p \ a \ supp q" using asm by auto + with a have "(p + q) \ a = (q + p) \ a" + by (simp add: supp_perm) + } + moreover + { assume a: "a \ supp p" "a \ supp q" + then have "q \ a \ supp q" by (simp add: supp_perm) + then have "q \ a \ supp p" using asm by auto + with a have "(p + q) \ a = (q + p) \ a" + by (simp add: supp_perm) + } + ultimately show "(p + q) \ a = (q + p) \ a" + using asm by blast + qed +qed section {* Finite Support instances for other types *}