equal
deleted
inserted
replaced
158 Goal "(A Int B) Int C = A Int (B Int C)"; |
158 Goal "(A Int B) Int C = A Int (B Int C)"; |
159 by (Blast_tac 1); |
159 by (Blast_tac 1); |
160 qed "Int_assoc"; |
160 qed "Int_assoc"; |
161 |
161 |
162 (*Intersection is an AC-operator*) |
162 (*Intersection is an AC-operator*) |
163 val Int_ac = [Int_assoc, Int_left_absorb, Int_commute, Int_left_commute]; |
163 bind_thms ("Int_ac", [Int_assoc, Int_left_absorb, Int_commute, Int_left_commute]); |
164 |
164 |
165 Goal "B<=A ==> A Int B = B"; |
165 Goal "B<=A ==> A Int B = B"; |
166 by (Blast_tac 1); |
166 by (Blast_tac 1); |
167 qed "Int_absorb1"; |
167 qed "Int_absorb1"; |
168 |
168 |
238 Goal "(A Un B) Un C = A Un (B Un C)"; |
238 Goal "(A Un B) Un C = A Un (B Un C)"; |
239 by (Blast_tac 1); |
239 by (Blast_tac 1); |
240 qed "Un_assoc"; |
240 qed "Un_assoc"; |
241 |
241 |
242 (*Union is an AC-operator*) |
242 (*Union is an AC-operator*) |
243 val Un_ac = [Un_assoc, Un_left_absorb, Un_commute, Un_left_commute]; |
243 bind_thms ("Un_ac", [Un_assoc, Un_left_absorb, Un_commute, Un_left_commute]); |
244 |
244 |
245 Goal "A<=B ==> A Un B = B"; |
245 Goal "A<=B ==> A Un B = B"; |
246 by (Blast_tac 1); |
246 by (Blast_tac 1); |
247 qed "Un_absorb1"; |
247 qed "Un_absorb1"; |
248 |
248 |
434 |
434 |
435 section "UN and INT"; |
435 section "UN and INT"; |
436 |
436 |
437 (*Basic identities*) |
437 (*Basic identities*) |
438 |
438 |
439 val not_empty = prove_goal Set.thy "(A ~= {}) = (? x. x:A)" (K [Blast_tac 1]); |
439 bind_thm ("not_empty", prove_goal Set.thy "(A ~= {}) = (? x. x:A)" (K [Blast_tac 1])); |
440 |
440 |
441 Goal "(UN x:{}. B x) = {}"; |
441 Goal "(UN x:{}. B x) = {}"; |
442 by (Blast_tac 1); |
442 by (Blast_tac 1); |
443 qed "UN_empty"; |
443 qed "UN_empty"; |
444 Addsimps[UN_empty]; |
444 Addsimps[UN_empty]; |
894 val bex_disj_distrib = |
894 val bex_disj_distrib = |
895 prover "(EX x:A. P x | Q x) = ((EX x:A. P x) | (EX x:A. Q x))"; |
895 prover "(EX x:A. P x | Q x) = ((EX x:A. P x) | (EX x:A. Q x))"; |
896 |
896 |
897 end; |
897 end; |
898 |
898 |
|
899 bind_thms ("UN_simps", UN_simps); |
|
900 bind_thms ("INT_simps", INT_simps); |
|
901 bind_thms ("ball_simps", ball_simps); |
|
902 bind_thms ("bex_simps", bex_simps); |
|
903 bind_thm ("ball_conj_distrib", ball_conj_distrib); |
|
904 bind_thm ("bex_disj_distrib", bex_disj_distrib); |
|
905 |
899 Addsimps (UN_simps @ INT_simps @ ball_simps @ bex_simps); |
906 Addsimps (UN_simps @ INT_simps @ ball_simps @ bex_simps); |