215 val INT_singleton = ballI RSN (2,INT_singleton_lemma); |
215 val INT_singleton = ballI RSN (2,INT_singleton_lemma); |
216 |
216 |
217 (** Devlin, Fundamentals of Contemporary Set Theory, page 12, exercise 5: |
217 (** Devlin, Fundamentals of Contemporary Set Theory, page 12, exercise 5: |
218 Union of a family of unions **) |
218 Union of a family of unions **) |
219 |
219 |
220 goal ZF.thy "(UN i:I. A(x) Un B(x)) = (UN i:I. A(x)) Un (UN i:I. B(x))"; |
220 goal ZF.thy "(UN i:I. A(i) Un B(i)) = (UN i:I. A(i)) Un (UN i:I. B(i))"; |
221 by (fast_tac eq_cs 1); |
221 by (fast_tac eq_cs 1); |
222 val UN_Un_distrib = result(); |
222 val UN_Un_distrib = result(); |
223 |
223 |
224 goal ZF.thy |
224 goal ZF.thy |
225 "!!A B. i:I ==> \ |
225 "!!A B. i:I ==> \ |
226 \ (INT i:I. A(x) Int B(x)) = (INT i:I. A(x)) Int (INT i:I. B(x))"; |
226 \ (INT i:I. A(i) Int B(i)) = (INT i:I. A(i)) Int (INT i:I. B(i))"; |
227 by (fast_tac eq_cs 1); |
227 by (fast_tac eq_cs 1); |
228 val INT_Int_distrib = result(); |
228 val INT_Int_distrib = result(); |
229 |
229 |
230 (** Devlin, page 12, exercise 5: Complements **) |
230 (** Devlin, page 12, exercise 5: Complements **) |
231 |
231 |
241 |
241 |
242 goal ZF.thy "(SUM x:(UN y:A. C(y)). B(x)) = (UN y:A. SUM x:C(y). B(x))"; |
242 goal ZF.thy "(SUM x:(UN y:A. C(y)). B(x)) = (UN y:A. SUM x:C(y). B(x))"; |
243 by (fast_tac eq_cs 1); |
243 by (fast_tac eq_cs 1); |
244 val SUM_UN_distrib1 = result(); |
244 val SUM_UN_distrib1 = result(); |
245 |
245 |
246 goal ZF.thy "(SUM x:A. UN y:B. C(x,y)) = (UN y:B. SUM x:A. C(x,y))"; |
246 goal ZF.thy "(SUM i:I. UN j:J. C(i,j)) = (UN j:J. SUM i:I. C(i,j))"; |
247 by (fast_tac eq_cs 1); |
247 by (fast_tac eq_cs 1); |
248 val SUM_UN_distrib2 = result(); |
248 val SUM_UN_distrib2 = result(); |
249 |
249 |
250 goal ZF.thy "(SUM x:A Un B. C(x)) = (SUM x:A. C(x)) Un (SUM x:B. C(x))"; |
250 goal ZF.thy "(SUM i:I Un J. C(i)) = (SUM i:I. C(i)) Un (SUM j:J. C(j))"; |
251 by (fast_tac eq_cs 1); |
251 by (fast_tac eq_cs 1); |
252 val SUM_Un_distrib1 = result(); |
252 val SUM_Un_distrib1 = result(); |
253 |
253 |
254 goal ZF.thy |
254 goal ZF.thy "(SUM i:I. A(i) Un B(i)) = (SUM i:I. A(i)) Un (SUM i:I. B(i))"; |
255 "(SUM i:I. A(x) Un B(x)) = (SUM i:I. A(x)) Un (SUM i:I. B(x))"; |
|
256 by (fast_tac eq_cs 1); |
255 by (fast_tac eq_cs 1); |
257 val SUM_Un_distrib2 = result(); |
256 val SUM_Un_distrib2 = result(); |
258 |
257 |
259 goal ZF.thy "(SUM x:A Int B. C(x)) = (SUM x:A. C(x)) Int (SUM x:B. C(x))"; |
258 goal ZF.thy "(SUM i:I Int J. C(i)) = (SUM i:I. C(i)) Int (SUM j:J. C(j))"; |
260 by (fast_tac eq_cs 1); |
259 by (fast_tac eq_cs 1); |
261 val SUM_Int_distrib1 = result(); |
260 val SUM_Int_distrib1 = result(); |
262 |
261 |
263 goal ZF.thy |
262 goal ZF.thy |
264 "(SUM i:I. A(x) Int B(x)) = (SUM i:I. A(x)) Int (SUM i:I. B(x))"; |
263 "(SUM i:I. A(i) Int B(i)) = (SUM i:I. A(i)) Int (SUM i:I. B(i))"; |
265 by (fast_tac eq_cs 1); |
264 by (fast_tac eq_cs 1); |
266 val SUM_Int_distrib2 = result(); |
265 val SUM_Int_distrib2 = result(); |
267 |
266 |
|
267 (*Cf Aczel, Non-Well-Founded Sets, page 115*) |
|
268 goal ZF.thy "(SUM i:I. A(i)) = (UN i:I. {i} * A(i))"; |
|
269 by (fast_tac eq_cs 1); |
|
270 val SUM_eq_UN = result(); |
|
271 |
268 (** Domain, Range and Field **) |
272 (** Domain, Range and Field **) |
269 |
273 |
270 goal ZF.thy "domain(A Un B) = domain(A) Un domain(B)"; |
274 goal ZF.thy "domain(A Un B) = domain(A) Un domain(B)"; |
271 by (fast_tac eq_cs 1); |
275 by (fast_tac eq_cs 1); |
272 val domain_Un_eq = result(); |
276 val domain_Un_eq = result(); |