96 fix x::"atom" |
96 fix x::"atom" |
97 show "x\<in>(supp S)" |
97 show "x\<in>(supp S)" |
98 proof (cases "x\<in>S") |
98 proof (cases "x\<in>S") |
99 case True |
99 case True |
100 have "x\<in>S" by fact |
100 have "x\<in>S" by fact |
101 hence "\<forall>b\<in>(UNIV-S). [(x,b)]\<bullet>S\<noteq>S" by (auto simp add: perm_set_eq calc_atm) |
101 hence "\<forall>b\<in>(UNIV-S). [(x,b)]\<bullet>S\<noteq>S" by (auto simp add: perm_set_def calc_atm) |
102 with asm2 have "infinite {b\<in>(UNIV-S). [(x,b)]\<bullet>S\<noteq>S}" by (rule infinite_Collection) |
102 with asm2 have "infinite {b\<in>(UNIV-S). [(x,b)]\<bullet>S\<noteq>S}" by (rule infinite_Collection) |
103 hence "infinite {b. [(x,b)]\<bullet>S\<noteq>S}" by (rule_tac infinite_super, auto) |
103 hence "infinite {b. [(x,b)]\<bullet>S\<noteq>S}" by (rule_tac infinite_super, auto) |
104 then show "x\<in>(supp S)" by (simp add: supp_def) |
104 then show "x\<in>(supp S)" by (simp add: supp_def) |
105 next |
105 next |
106 case False |
106 case False |
107 have "x\<notin>S" by fact |
107 have "x\<notin>S" by fact |
108 hence "\<forall>b\<in>S. [(x,b)]\<bullet>S\<noteq>S" by (auto simp add: perm_set_eq calc_atm) |
108 hence "\<forall>b\<in>S. [(x,b)]\<bullet>S\<noteq>S" by (auto simp add: perm_set_def calc_atm) |
109 with asm1 have "infinite {b\<in>S. [(x,b)]\<bullet>S\<noteq>S}" by (rule infinite_Collection) |
109 with asm1 have "infinite {b\<in>S. [(x,b)]\<bullet>S\<noteq>S}" by (rule infinite_Collection) |
110 hence "infinite {b. [(x,b)]\<bullet>S\<noteq>S}" by (rule_tac infinite_super, auto) |
110 hence "infinite {b. [(x,b)]\<bullet>S\<noteq>S}" by (rule_tac infinite_super, auto) |
111 then show "x\<in>(supp S)" by (simp add: supp_def) |
111 then show "x\<in>(supp S)" by (simp add: supp_def) |
112 qed |
112 qed |
113 qed |
113 qed |
127 |
127 |
128 lemma UNIV_supp: |
128 lemma UNIV_supp: |
129 shows "supp (UNIV::atom set) = ({}::atom set)" |
129 shows "supp (UNIV::atom set) = ({}::atom set)" |
130 proof - |
130 proof - |
131 have "\<forall>(x::atom) (y::atom). [(x,y)]\<bullet>UNIV = (UNIV::atom set)" |
131 have "\<forall>(x::atom) (y::atom). [(x,y)]\<bullet>UNIV = (UNIV::atom set)" |
132 by (auto simp add: perm_set_eq calc_atm) |
132 by (auto simp add: perm_set_def calc_atm) |
133 then show "supp (UNIV::atom set) = ({}::atom set)" by (simp add: supp_def) |
133 then show "supp (UNIV::atom set) = ({}::atom set)" by (simp add: supp_def) |
134 qed |
134 qed |
135 |
135 |
136 text {* Putting everything together. *} |
136 text {* Putting everything together. *} |
137 theorem EVEN_ODD_freshness: |
137 theorem EVEN_ODD_freshness: |