src/ZF/equalities.ML
changeset 5325 f7a5e06adea1
parent 5321 f8848433d240
child 6068 2d8f3e1f1151
equal deleted inserted replaced
5324:ec84178243ff 5325:f7a5e06adea1
   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