src/HOL/equalities.ML
changeset 12886 75ca1bf5ae12
parent 12486 0ed8bdd883e0
equal deleted inserted replaced
12885:6288ebcb1623 12886:75ca1bf5ae12
    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";