equal
deleted
inserted
replaced
66 Goal "insert a A = {a} Un A"; |
66 Goal "insert a A = {a} Un A"; |
67 by (Blast_tac 1); |
67 by (Blast_tac 1); |
68 qed "insert_is_Un"; |
68 qed "insert_is_Un"; |
69 |
69 |
70 Goal "insert a A ~= {}"; |
70 Goal "insert a A ~= {}"; |
71 by (blast_tac (claset() addEs [equalityCE]) 1); |
71 by (Blast_tac 1); |
72 qed"insert_not_empty"; |
72 qed"insert_not_empty"; |
73 Addsimps[insert_not_empty]; |
73 Addsimps[insert_not_empty]; |
74 |
74 |
75 bind_thm("empty_not_insert",insert_not_empty RS not_sym); |
75 bind_thm("empty_not_insert",insert_not_empty RS not_sym); |
76 Addsimps[empty_not_insert]; |
76 Addsimps[empty_not_insert]; |
134 by (Blast_tac 1); |
134 by (Blast_tac 1); |
135 qed "insert_image"; |
135 qed "insert_image"; |
136 Addsimps [insert_image]; |
136 Addsimps [insert_image]; |
137 |
137 |
138 Goal "(f`A = {}) = (A = {})"; |
138 Goal "(f`A = {}) = (A = {})"; |
139 by (blast_tac (claset() addSEs [equalityCE]) 1); |
139 by (Blast_tac 1); |
140 qed "image_is_empty"; |
140 qed "image_is_empty"; |
141 AddIffs [image_is_empty]; |
141 AddIffs [image_is_empty]; |
142 |
142 |
143 (*NOT suitable as a default simprule: the RHS isn't simpler than the LHS, |
143 (*NOT suitable as a default simprule: the RHS isn't simpler than the LHS, |
144 with its implicit quantifier and conjunction. Also image enjoys better |
144 with its implicit quantifier and conjunction. Also image enjoys better |
214 by (Blast_tac 1); |
214 by (Blast_tac 1); |
215 qed "Int_empty_right"; |
215 qed "Int_empty_right"; |
216 Addsimps[Int_empty_right]; |
216 Addsimps[Int_empty_right]; |
217 |
217 |
218 Goal "(A Int B = {}) = (A <= -B)"; |
218 Goal "(A Int B = {}) = (A <= -B)"; |
219 by (blast_tac (claset() addSEs [equalityCE]) 1); |
219 by (Blast_tac 1); |
220 qed "disjoint_eq_subset_Compl"; |
220 qed "disjoint_eq_subset_Compl"; |
221 |
221 |
222 Goal "(A Int B = {}) = (ALL x:A. ALL y:B. x ~= y)"; |
222 Goal "(A Int B = {}) = (ALL x:A. ALL y:B. x ~= y)"; |
223 by (Blast_tac 1); |
223 by (Blast_tac 1); |
224 qed "disjoint_iff_not_equal"; |
224 qed "disjoint_iff_not_equal"; |
244 Goal "(B Un C) Int A = (B Int A) Un (C Int A)"; |
244 Goal "(B Un C) Int A = (B Int A) Un (C Int A)"; |
245 by (Blast_tac 1); |
245 by (Blast_tac 1); |
246 qed "Int_Un_distrib2"; |
246 qed "Int_Un_distrib2"; |
247 |
247 |
248 Goal "(A Int B = UNIV) = (A = UNIV & B = UNIV)"; |
248 Goal "(A Int B = UNIV) = (A = UNIV & B = UNIV)"; |
249 by (blast_tac (claset() addEs [equalityCE]) 1); |
249 by (Blast_tac 1); |
250 qed "Int_UNIV"; |
250 qed "Int_UNIV"; |
251 Addsimps[Int_UNIV]; |
251 Addsimps[Int_UNIV]; |
252 |
252 |
253 Goal "(C <= A Int B) = (C <= A & C <= B)"; |
253 Goal "(C <= A Int B) = (C <= A & C <= B)"; |
254 by (Blast_tac 1); |
254 by (Blast_tac 1); |
350 \ (A Un B) Int (B Un C) Int (C Un A)"; |
350 \ (A Un B) Int (B Un C) Int (C Un A)"; |
351 by (Blast_tac 1); |
351 by (Blast_tac 1); |
352 qed "Un_Int_crazy"; |
352 qed "Un_Int_crazy"; |
353 |
353 |
354 Goal "(A<=B) = (A Un B = B)"; |
354 Goal "(A<=B) = (A Un B = B)"; |
355 by (blast_tac (claset() addSEs [equalityCE]) 1); |
355 by (Blast_tac 1); |
356 qed "subset_Un_eq"; |
356 qed "subset_Un_eq"; |
357 |
357 |
358 Goal "(A Un B = {}) = (A = {} & B = {})"; |
358 Goal "(A Un B = {}) = (A = {} & B = {})"; |
359 by (blast_tac (claset() addEs [equalityCE]) 1); |
359 by (Blast_tac 1); |
360 qed "Un_empty"; |
360 qed "Un_empty"; |
361 AddIffs[Un_empty]; |
361 AddIffs[Un_empty]; |
362 |
362 |
363 Goal "(A Un B <= C) = (A <= C & B <= C)"; |
363 Goal "(A Un B <= C) = (A <= C & B <= C)"; |
364 by (Blast_tac 1); |
364 by (Blast_tac 1); |
411 by (Blast_tac 1); |
411 by (Blast_tac 1); |
412 qed "subset_Compl_self_eq"; |
412 qed "subset_Compl_self_eq"; |
413 |
413 |
414 (*Halmos, Naive Set Theory, page 16.*) |
414 (*Halmos, Naive Set Theory, page 16.*) |
415 Goal "((A Int B) Un C = A Int (B Un C)) = (C<=A)"; |
415 Goal "((A Int B) Un C = A Int (B Un C)) = (C<=A)"; |
416 by (blast_tac (claset() addSEs [equalityCE]) 1); |
416 by (Blast_tac 1); |
417 qed "Un_Int_assoc_eq"; |
417 qed "Un_Int_assoc_eq"; |
418 |
418 |
419 Goal "-UNIV = {}"; |
419 Goal "-UNIV = {}"; |
420 by (Blast_tac 1); |
420 by (Blast_tac 1); |
421 qed "Compl_UNIV_eq"; |
421 qed "Compl_UNIV_eq"; |
467 by Auto_tac; |
467 by Auto_tac; |
468 qed "Union_empty_conv"; |
468 qed "Union_empty_conv"; |
469 AddIffs [Union_empty_conv]; |
469 AddIffs [Union_empty_conv]; |
470 |
470 |
471 Goal "(Union(C) Int A = {}) = (ALL B:C. B Int A = {})"; |
471 Goal "(Union(C) Int A = {}) = (ALL B:C. B Int A = {})"; |
472 by (blast_tac (claset() addSEs [equalityCE]) 1); |
472 by (Blast_tac 1); |
473 qed "Union_disjoint"; |
473 qed "Union_disjoint"; |
474 |
474 |
475 section "Inter"; |
475 section "Inter"; |
476 |
476 |
477 Goal "Inter({}) = UNIV"; |
477 Goal "Inter({}) = UNIV"; |