73 "~AC1 ==> \<exists>A. \<forall>f \<in> Pow(A)-{0} -> A. \<exists>u \<in> Pow(A)-{0}. f`u \<notin> u" |
73 "~AC1 ==> \<exists>A. \<forall>f \<in> Pow(A)-{0} -> A. \<exists>u \<in> Pow(A)-{0}. f`u \<notin> u" |
74 apply (unfold AC1_def) |
74 apply (unfold AC1_def) |
75 apply (erule swap) |
75 apply (erule swap) |
76 apply (rule allI) |
76 apply (rule allI) |
77 apply (erule swap) |
77 apply (erule swap) |
78 apply (rule_tac x = "Union (A)" in exI) |
78 apply (rule_tac x = "\<Union>(A)" in exI) |
79 apply (blast intro: lam_type) |
79 apply (blast intro: lam_type) |
80 done |
80 done |
81 |
81 |
82 lemma AC17_AC1_aux1: |
82 lemma AC17_AC1_aux1: |
83 "[| \<forall>f \<in> Pow(x) - {0} -> x. \<exists>u \<in> Pow(x) - {0}. f`u\<notin>u; |
83 "[| \<forall>f \<in> Pow(x) - {0} -> x. \<exists>u \<in> Pow(x) - {0}. f`u\<notin>u; |
134 |
134 |
135 (* ********************************************************************** |
135 (* ********************************************************************** |
136 AC1 ==> AC2 ==> AC1 |
136 AC1 ==> AC2 ==> AC1 |
137 AC1 ==> AC4 ==> AC3 ==> AC1 |
137 AC1 ==> AC4 ==> AC3 ==> AC1 |
138 AC4 ==> AC5 ==> AC4 |
138 AC4 ==> AC5 ==> AC4 |
139 AC1 <-> AC6 |
139 AC1 \<longleftrightarrow> AC6 |
140 ************************************************************************* *) |
140 ************************************************************************* *) |
141 |
141 |
142 (* ********************************************************************** *) |
142 (* ********************************************************************** *) |
143 (* AC1 ==> AC2 *) |
143 (* AC1 ==> AC2 *) |
144 (* ********************************************************************** *) |
144 (* ********************************************************************** *) |
145 |
145 |
146 lemma AC1_AC2_aux1: |
146 lemma AC1_AC2_aux1: |
147 "[| f:(\<Pi> X \<in> A. X); B \<in> A; 0\<notin>A |] ==> {f`B} \<subseteq> B Int {f`C. C \<in> A}" |
147 "[| f:(\<Pi> X \<in> A. X); B \<in> A; 0\<notin>A |] ==> {f`B} \<subseteq> B \<inter> {f`C. C \<in> A}" |
148 by (fast elim!: apply_type) |
148 by (fast elim!: apply_type) |
149 |
149 |
150 lemma AC1_AC2_aux2: |
150 lemma AC1_AC2_aux2: |
151 "[| pairwise_disjoint(A); B \<in> A; C \<in> A; D \<in> B; D \<in> C |] ==> f`B = f`C" |
151 "[| pairwise_disjoint(A); B \<in> A; C \<in> A; D \<in> B; D \<in> C |] ==> f`B = f`C" |
152 by (unfold pairwise_disjoint_def, fast) |
152 by (unfold pairwise_disjoint_def, fast) |
167 (* ********************************************************************** *) |
167 (* ********************************************************************** *) |
168 |
168 |
169 lemma AC2_AC1_aux1: "0\<notin>A ==> 0 \<notin> {B*{B}. B \<in> A}" |
169 lemma AC2_AC1_aux1: "0\<notin>A ==> 0 \<notin> {B*{B}. B \<in> A}" |
170 by (fast dest!: sym [THEN Sigma_empty_iff [THEN iffD1]]) |
170 by (fast dest!: sym [THEN Sigma_empty_iff [THEN iffD1]]) |
171 |
171 |
172 lemma AC2_AC1_aux2: "[| X*{X} Int C = {y}; X \<in> A |] |
172 lemma AC2_AC1_aux2: "[| X*{X} \<inter> C = {y}; X \<in> A |] |
173 ==> (THE y. X*{X} Int C = {y}): X*A" |
173 ==> (THE y. X*{X} \<inter> C = {y}): X*A" |
174 apply (rule subst_elem [of y]) |
174 apply (rule subst_elem [of y]) |
175 apply (blast elim!: equalityE) |
175 apply (blast elim!: equalityE) |
176 apply (auto simp add: singleton_eq_iff) |
176 apply (auto simp add: singleton_eq_iff) |
177 done |
177 done |
178 |
178 |
179 lemma AC2_AC1_aux3: |
179 lemma AC2_AC1_aux3: |
180 "\<forall>D \<in> {E*{E}. E \<in> A}. \<exists>y. D Int C = {y} |
180 "\<forall>D \<in> {E*{E}. E \<in> A}. \<exists>y. D \<inter> C = {y} |
181 ==> (\<lambda>x \<in> A. fst(THE z. (x*{x} Int C = {z}))) \<in> (\<Pi> X \<in> A. X)" |
181 ==> (\<lambda>x \<in> A. fst(THE z. (x*{x} \<inter> C = {z}))) \<in> (\<Pi> X \<in> A. X)" |
182 apply (rule lam_type) |
182 apply (rule lam_type) |
183 apply (drule bspec, blast) |
183 apply (drule bspec, blast) |
184 apply (blast intro: AC2_AC1_aux2 fst_type) |
184 apply (blast intro: AC2_AC1_aux2 fst_type) |
185 done |
185 done |
186 |
186 |
210 |
210 |
211 (* ********************************************************************** *) |
211 (* ********************************************************************** *) |
212 (* AC4 ==> AC3 *) |
212 (* AC4 ==> AC3 *) |
213 (* ********************************************************************** *) |
213 (* ********************************************************************** *) |
214 |
214 |
215 lemma AC4_AC3_aux1: "f \<in> A->B ==> (\<Union>z \<in> A. {z}*f`z) \<subseteq> A*Union(B)" |
215 lemma AC4_AC3_aux1: "f \<in> A->B ==> (\<Union>z \<in> A. {z}*f`z) \<subseteq> A*\<Union>(B)" |
216 by (fast dest!: apply_type) |
216 by (fast dest!: apply_type) |
217 |
217 |
218 lemma AC4_AC3_aux2: "domain(\<Union>z \<in> A. {z}*f(z)) = {a \<in> A. f(a)\<noteq>0}" |
218 lemma AC4_AC3_aux2: "domain(\<Union>z \<in> A. {z}*f(z)) = {a \<in> A. f(a)\<noteq>0}" |
219 by blast |
219 by blast |
220 |
220 |
290 apply (blast intro: AC5_AC4_aux1) |
290 apply (blast intro: AC5_AC4_aux1) |
291 done |
291 done |
292 |
292 |
293 |
293 |
294 (* ********************************************************************** *) |
294 (* ********************************************************************** *) |
295 (* AC1 <-> AC6 *) |
295 (* AC1 \<longleftrightarrow> AC6 *) |
296 (* ********************************************************************** *) |
296 (* ********************************************************************** *) |
297 |
297 |
298 lemma AC1_iff_AC6: "AC1 <-> AC6" |
298 lemma AC1_iff_AC6: "AC1 \<longleftrightarrow> AC6" |
299 by (unfold AC1_def AC6_def, blast) |
299 by (unfold AC1_def AC6_def, blast) |
300 |
300 |
301 end |
301 end |