equal
deleted
inserted
replaced
180 |
180 |
181 Goal "Union(C) Int A = 0 <-> (ALL B:C. B Int A = 0)"; |
181 Goal "Union(C) Int A = 0 <-> (ALL B:C. B Int A = 0)"; |
182 by (blast_tac (claset() addSEs [equalityE]) 1); |
182 by (blast_tac (claset() addSEs [equalityE]) 1); |
183 qed "Union_disjoint"; |
183 qed "Union_disjoint"; |
184 |
184 |
185 goalw ZF.thy [Inter_def] "Inter(0) = 0"; |
185 Goal "Union(A) = 0 <-> (ALL B:A. B=0)"; |
|
186 by (Blast_tac 1); |
|
187 qed "Union_empty_iff"; |
|
188 |
|
189 Goalw [Inter_def] "Inter(0) = 0"; |
186 by (Blast_tac 1); |
190 by (Blast_tac 1); |
187 qed "Inter_0"; |
191 qed "Inter_0"; |
188 |
192 |
189 Goal "[| z:A; z:B |] ==> Inter(A) Un Inter(B) <= Inter(A Int B)"; |
193 Goal "[| z:A; z:B |] ==> Inter(A) Un Inter(B) <= Inter(A Int B)"; |
190 by (Blast_tac 1); |
194 by (Blast_tac 1); |
207 |
211 |
208 Goal "Union(A) = (UN x:A. x)"; |
212 Goal "Union(A) = (UN x:A. x)"; |
209 by (Blast_tac 1); |
213 by (Blast_tac 1); |
210 qed "Union_eq_UN"; |
214 qed "Union_eq_UN"; |
211 |
215 |
212 goalw ZF.thy [Inter_def] "Inter(A) = (INT x:A. x)"; |
216 Goalw [Inter_def] "Inter(A) = (INT x:A. x)"; |
213 by (Blast_tac 1); |
217 by (Blast_tac 1); |
214 qed "Inter_eq_INT"; |
218 qed "Inter_eq_INT"; |
215 |
219 |
216 Goal "(UN i:0. A(i)) = 0"; |
220 Goal "(UN i:0. A(i)) = 0"; |
217 by (Blast_tac 1); |
221 by (Blast_tac 1); |
342 |
346 |
343 Goal "b:B ==> domain(A*B) = A"; |
347 Goal "b:B ==> domain(A*B) = A"; |
344 by (Blast_tac 1); |
348 by (Blast_tac 1); |
345 qed "domain_of_prod"; |
349 qed "domain_of_prod"; |
346 |
350 |
347 qed_goal "domain_0" ZF.thy "domain(0) = 0" |
351 qed_goal "domain_0" thy "domain(0) = 0" |
348 (fn _ => [ Blast_tac 1 ]); |
352 (fn _ => [ Blast_tac 1 ]); |
349 |
353 |
350 qed_goal "domain_cons" ZF.thy |
354 qed_goal "domain_cons" thy |
351 "domain(cons(<a,b>,r)) = cons(a, domain(r))" |
355 "domain(cons(<a,b>,r)) = cons(a, domain(r))" |
352 (fn _ => [ Blast_tac 1 ]); |
356 (fn _ => [ Blast_tac 1 ]); |
353 |
357 |
354 Goal "domain(A Un B) = domain(A) Un domain(B)"; |
358 Goal "domain(A Un B) = domain(A) Un domain(B)"; |
355 by (Blast_tac 1); |
359 by (Blast_tac 1); |
374 |
378 |
375 Goal "a:A ==> range(A*B) = B"; |
379 Goal "a:A ==> range(A*B) = B"; |
376 by (Blast_tac 1); |
380 by (Blast_tac 1); |
377 qed "range_of_prod"; |
381 qed "range_of_prod"; |
378 |
382 |
379 qed_goal "range_0" ZF.thy "range(0) = 0" |
383 qed_goal "range_0" thy "range(0) = 0" |
380 (fn _ => [ Blast_tac 1 ]); |
384 (fn _ => [ Blast_tac 1 ]); |
381 |
385 |
382 qed_goal "range_cons" ZF.thy |
386 qed_goal "range_cons" thy |
383 "range(cons(<a,b>,r)) = cons(b, range(r))" |
387 "range(cons(<a,b>,r)) = cons(b, range(r))" |
384 (fn _ => [ Blast_tac 1 ]); |
388 (fn _ => [ Blast_tac 1 ]); |
385 |
389 |
386 Goal "range(A Un B) = range(A) Un range(B)"; |
390 Goal "range(A Un B) = range(A) Un range(B)"; |
387 by (Blast_tac 1); |
391 by (Blast_tac 1); |
402 Addsimps [range_0, range_cons, range_Un_eq, range_converse]; |
406 Addsimps [range_0, range_cons, range_Un_eq, range_converse]; |
403 |
407 |
404 |
408 |
405 (** Field **) |
409 (** Field **) |
406 |
410 |
407 qed_goal "field_of_prod" ZF.thy "field(A*A) = A" |
411 qed_goal "field_of_prod" thy "field(A*A) = A" |
408 (fn _ => [ Blast_tac 1 ]); |
412 (fn _ => [ Blast_tac 1 ]); |
409 |
413 |
410 qed_goal "field_0" ZF.thy "field(0) = 0" |
414 qed_goal "field_0" thy "field(0) = 0" |
411 (fn _ => [ Blast_tac 1 ]); |
415 (fn _ => [ Blast_tac 1 ]); |
412 |
416 |
413 qed_goal "field_cons" ZF.thy |
417 qed_goal "field_cons" thy |
414 "field(cons(<a,b>,r)) = cons(a, cons(b, field(r)))" |
418 "field(cons(<a,b>,r)) = cons(a, cons(b, field(r)))" |
415 (fn _ => [ rtac equalityI 1, ALLGOALS (Blast_tac) ]); |
419 (fn _ => [ rtac equalityI 1, ALLGOALS (Blast_tac) ]); |
416 |
420 |
417 Goal "field(A Un B) = field(A) Un field(B)"; |
421 Goal "field(A Un B) = field(A) Un field(B)"; |
418 by (Blast_tac 1); |
422 by (Blast_tac 1); |
541 Goal "converse(UN x:A. B(x)) = (UN x:A. converse(B(x)))"; |
545 Goal "converse(UN x:A. B(x)) = (UN x:A. converse(B(x)))"; |
542 by (Blast_tac 1); |
546 by (Blast_tac 1); |
543 qed "converse_UN"; |
547 qed "converse_UN"; |
544 |
548 |
545 (*Unfolding Inter avoids using excluded middle on A=0*) |
549 (*Unfolding Inter avoids using excluded middle on A=0*) |
546 goalw ZF.thy [Inter_def] "converse(INT x:A. B(x)) = (INT x:A. converse(B(x)))"; |
550 Goalw [Inter_def] "converse(INT x:A. B(x)) = (INT x:A. converse(B(x)))"; |
547 by (Blast_tac 1); |
551 by (Blast_tac 1); |
548 qed "converse_INT"; |
552 qed "converse_INT"; |
549 |
553 |
550 Addsimps [converse_Un, converse_Int, converse_Diff, converse_UN, converse_INT]; |
554 Addsimps [converse_Un, converse_Int, converse_Diff, converse_UN, converse_INT]; |
551 |
555 |