More properties that relate abs_res and abs_set. Also abs_res with less binders.
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Tue, 01 Feb 2011 08:48:14 +0900
changeset 2713 a84999edbcb3
parent 2712 c66d288b9fa0
child 2714 908750991c2f
More properties that relate abs_res and abs_set. Also abs_res with less binders.
Nominal/Nominal2_Abs.thy
--- a/Nominal/Nominal2_Abs.thy	Sun Jan 30 12:09:23 2011 +0900
+++ b/Nominal/Nominal2_Abs.thy	Tue Feb 01 08:48:14 2011 +0900
@@ -340,6 +340,11 @@
   then show ?thesis using a b c unfolding alpha_set by simp
 qed
 
+lemma alpha_abs_set_abs_res:
+  assumes asm: "(as \<inter> supp x, x) \<approx>set (op =) supp p (as' \<inter> supp x', x')"
+  shows "(as, x) \<approx>res (op =) supp p (as', x')"
+  using asm unfolding alphas by (auto simp add: Diff_Int)
+
 lemma alpha_abs_res_stronger1:
   assumes asm: "(as, x) \<approx>res (op =) supp p' (as', x')"
   shows "\<exists>p. (as, x) \<approx>res (op =) supp p (as', x') \<and> supp p \<subseteq> as \<union> as'"
@@ -503,6 +508,25 @@
     (\<exists>p. (bsl, x) \<approx>lst (op =) supp p (csl, y) \<and> supp p \<subseteq> set bsl \<union> set csl)"
   by (lifting alphas_abs_stronger)
 
+lemma Abs_eq_res_set:
+  "(([bs]res. x) = ([cs]res. y)) = (([(bs \<inter> supp x)]set. x) = ([(cs \<inter> supp y)]set. y))"
+  unfolding Abs_eq_iff
+  using alpha_abs_set_abs_res alpha_abs_res_abs_set
+  apply auto
+  apply (rule_tac x="p" in exI)
+  apply assumption
+  apply (rule_tac x="p" in exI)
+  apply assumption
+  done
+
+lemma Abs_eq_res_supp:
+  assumes asm: "supp x \<subseteq> bs"
+  shows "([as]res. x) = ([as \<inter> bs]res. x)"
+  unfolding Abs_eq_iff alphas
+  apply (rule_tac x="0::perm" in exI)
+  apply (simp add: fresh_star_zero)
+  using asm by blast
+
 lemma Abs_exhausts:
   shows "(\<And>as (x::'a::pt). y1 = Abs_set as x \<Longrightarrow> P1) \<Longrightarrow> P1"
   and   "(\<And>as (x::'a::pt). y2 = Abs_res as x \<Longrightarrow> P2) \<Longrightarrow> P2"