src/HOL/equalities.ML
changeset 4609 b435c5a320b0
parent 4605 579e0ef2df6b
child 4615 67457d16cdbc
equal deleted inserted replaced
4608:cdf16a9fb2ce 4609:b435c5a320b0
   131 goal thy "A Int A = A";
   131 goal thy "A Int A = A";
   132 by (Blast_tac 1);
   132 by (Blast_tac 1);
   133 qed "Int_absorb";
   133 qed "Int_absorb";
   134 Addsimps[Int_absorb];
   134 Addsimps[Int_absorb];
   135 
   135 
       
   136 goal thy " A Int (A Int B) = A Int B";
       
   137 by (Blast_tac 1);
       
   138 qed "Int_left_absorb";
       
   139 
   136 goal thy "A Int B  =  B Int A";
   140 goal thy "A Int B  =  B Int A";
   137 by (Blast_tac 1);
   141 by (Blast_tac 1);
   138 qed "Int_commute";
   142 qed "Int_commute";
   139 
   143 
       
   144 goal thy "A Int (B Int C) = B Int (A Int C)";
       
   145 by (Blast_tac 1);
       
   146 qed "Int_left_commute";
       
   147 
   140 goal thy "(A Int B) Int C  =  A Int (B Int C)";
   148 goal thy "(A Int B) Int C  =  A Int (B Int C)";
   141 by (Blast_tac 1);
   149 by (Blast_tac 1);
   142 qed "Int_assoc";
   150 qed "Int_assoc";
       
   151 
       
   152 (*Intersection is an AC-operator*)
       
   153 val Int_ac = [Int_assoc, Int_left_absorb, Int_commute, Int_left_commute];
   143 
   154 
   144 goal thy "{} Int B = {}";
   155 goal thy "{} Int B = {}";
   145 by (Blast_tac 1);
   156 by (Blast_tac 1);
   146 qed "Int_empty_left";
   157 qed "Int_empty_left";
   147 Addsimps[Int_empty_left];
   158 Addsimps[Int_empty_left];
   195 
   206 
   196 goal thy "A Un B  =  B Un A";
   207 goal thy "A Un B  =  B Un A";
   197 by (Blast_tac 1);
   208 by (Blast_tac 1);
   198 qed "Un_commute";
   209 qed "Un_commute";
   199 
   210 
   200 goal thy " A Un (B Un C) = B Un (A Un C)";
   211 goal thy "A Un (B Un C) = B Un (A Un C)";
   201 by (Blast_tac 1);
   212 by (Blast_tac 1);
   202 qed "Un_left_commute";
   213 qed "Un_left_commute";
   203 
   214 
   204 goal thy "(A Un B) Un C  =  A Un (B Un C)";
   215 goal thy "(A Un B) Un C  =  A Un (B Un C)";
   205 by (Blast_tac 1);
   216 by (Blast_tac 1);
   206 qed "Un_assoc";
   217 qed "Un_assoc";
       
   218 
       
   219 (*Union is an AC-operator*)
       
   220 val Un_ac = [Un_assoc, Un_left_absorb, Un_commute, Un_left_commute];
   207 
   221 
   208 goal thy "{} Un B = B";
   222 goal thy "{} Un B = B";
   209 by (Blast_tac 1);
   223 by (Blast_tac 1);
   210 qed "Un_empty_left";
   224 qed "Un_empty_left";
   211 Addsimps[Un_empty_left];
   225 Addsimps[Un_empty_left];
   245 \                                      else        A Int B)";
   259 \                                      else        A Int B)";
   246 by (simp_tac (simpset() addsplits [expand_if]) 1);
   260 by (simp_tac (simpset() addsplits [expand_if]) 1);
   247 by (Blast_tac 1);
   261 by (Blast_tac 1);
   248 qed "Int_insert_right";
   262 qed "Int_insert_right";
   249 
   263 
   250 goal thy "(A Int B) Un C  =  (A Un C) Int (B Un C)";
   264 goal thy "A Un (B Int C)  =  (A Un B) Int (A Un C)";
   251 by (Blast_tac 1);
   265 by (Blast_tac 1);
   252 qed "Un_Int_distrib";
   266 qed "Un_Int_distrib";
       
   267 
       
   268 goal thy "(B Int C) Un A =  (B Un A) Int (C Un A)";
       
   269 by (Blast_tac 1);
       
   270 qed "Un_Int_distrib2";
   253 
   271 
   254 goal thy
   272 goal thy
   255  "(A Int B) Un (B Int C) Un (C Int A) = (A Un B) Int (B Un C) Int (C Un A)";
   273  "(A Int B) Un (B Int C) Un (C Int A) = (A Un B) Int (B Un C) Int (C Un A)";
   256 by (Blast_tac 1);
   274 by (Blast_tac 1);
   257 qed "Un_Int_crazy";
   275 qed "Un_Int_crazy";
   504 by (Blast_tac 1);
   522 by (Blast_tac 1);
   505 qed "bex_Un";
   523 qed "bex_Un";
   506 
   524 
   507 
   525 
   508 section "-";
   526 section "-";
       
   527 
       
   528 goal thy "A-B = A Int Compl B";
       
   529 by (Blast_tac 1);
       
   530 qed "Diff_eq_Int_Compl";
   509 
   531 
   510 goal thy "A-A = {}";
   532 goal thy "A-A = {}";
   511 by (Blast_tac 1);
   533 by (Blast_tac 1);
   512 qed "Diff_cancel";
   534 qed "Diff_cancel";
   513 Addsimps[Diff_cancel];
   535 Addsimps[Diff_cancel];