merged
authorChristian Urban <urbanc@in.tum.de>
Tue, 02 Mar 2010 15:07:27 +0100
changeset 1307 003c7e290a04
parent 1306 e965524c3301 (diff)
parent 1304 dc65319809cc (current diff)
child 1311 b7463e5e7d87
child 1312 b0eae8c93314
merged
Nominal/Abs.thy
--- a/Nominal/Nominal2_Base.thy	Tue Mar 02 14:51:40 2010 +0100
+++ b/Nominal/Nominal2_Base.thy	Tue Mar 02 15:07:27 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 \<inter>  supp q = {}"
+  shows "p + q  = q + p"
+unfolding expand_perm_eq
+proof
+  fix a::"atom"
+  show "(p + q) \<bullet> a = (q + p) \<bullet> a"
+  proof -
+    { assume "a \<notin> supp p" "a \<notin> supp q"
+      then have "(p + q) \<bullet> a = (q + p) \<bullet> a" 
+	by (simp add: supp_perm)
+    }
+    moreover
+    { assume a: "a \<in> supp p" "a \<notin> supp q"
+      then have "p \<bullet> a \<in> supp p" by (simp add: supp_perm)
+      then have "p \<bullet> a \<notin> supp q" using asm by auto
+      with a have "(p + q) \<bullet> a = (q + p) \<bullet> a" 
+	by (simp add: supp_perm)
+    }
+    moreover
+    { assume a: "a \<notin> supp p" "a \<in> supp q"
+      then have "q \<bullet> a \<in> supp q" by (simp add: supp_perm)
+      then have "q \<bullet> a \<notin> supp p" using asm by auto 
+      with a have "(p + q) \<bullet> a = (q + p) \<bullet> a" 
+	by (simp add: supp_perm)
+    }
+    ultimately show "(p + q) \<bullet> a = (q + p) \<bullet> a" 
+      using asm by blast
+  qed
+qed
 
 section {* Finite Support instances for other types *}