667 by (simp add: btrm.inject alpha) |
667 by (simp add: btrm.inject alpha) |
668 then show ?thesis |
668 then show ?thesis |
669 proof |
669 proof |
670 assume "x = x' \<and> t = u" |
670 assume "x = x' \<and> t = u" |
671 with PVar PVar' have "PVar x T = ([]::name prm) \<bullet> q \<and> |
671 with PVar PVar' have "PVar x T = ([]::name prm) \<bullet> q \<and> |
672 t = ([]::name prm) \<bullet> u \<and> |
672 t = ([]::name prm) \<bullet> u \<and> |
673 set ([]::name prm) \<subseteq> (supp (PVar x T) \<union> supp q) \<times> |
673 set ([]::name prm) \<subseteq> (supp (PVar x T) \<union> supp q) \<times> |
674 (supp (PVar x T) \<union> supp q)" by simp |
674 (supp (PVar x T) \<union> supp q)" by simp |
675 then show ?thesis .. |
675 then show ?thesis .. |
676 next |
676 next |
677 assume "x \<noteq> x' \<and> t = [(x, x')] \<bullet> u \<and> x \<sharp> u" |
677 assume "x \<noteq> x' \<and> t = [(x, x')] \<bullet> u \<and> x \<sharp> u" |
678 with PVar PVar' have "PVar x T = [(x, x')] \<bullet> q \<and> |
678 with PVar PVar' have "PVar x T = [(x, x')] \<bullet> q \<and> |
679 t = [(x, x')] \<bullet> u \<and> |
679 t = [(x, x')] \<bullet> u \<and> |
680 set [(x, x')] \<subseteq> (supp (PVar x T) \<union> supp q) \<times> |
680 set [(x, x')] \<subseteq> (supp (PVar x T) \<union> supp q) \<times> |
681 (supp (PVar x T) \<union> supp q)" |
681 (supp (PVar x T) \<union> supp q)" |
682 by (simp add: perm_swap swap_simps supp_atm perm_type) |
682 by (simp add: perm_swap swap_simps supp_atm perm_type) |
683 then show ?thesis .. |
683 then show ?thesis .. |
684 qed |
684 qed |
685 next |
685 next |
686 case (PTuple p\<^isub>1 p\<^isub>2) |
686 case (PTuple p\<^isub>1 p\<^isub>2) |
687 with PVar have "ty_size (pat_type p\<^isub>1) < ty_size T" by simp |
687 with PVar have "ty_size (pat_type p\<^isub>1) < ty_size T" by simp |