equal
deleted
inserted
replaced
8 |
8 |
9 writeln"File HOL/equalities"; |
9 writeln"File HOL/equalities"; |
10 |
10 |
11 AddSIs [equalityI]; |
11 AddSIs [equalityI]; |
12 |
12 |
13 val eq_cs = set_cs addSIs [equalityI]; |
|
14 |
|
15 section "{}"; |
13 section "{}"; |
16 |
14 |
17 goal Set.thy "{x.False} = {}"; |
15 goal Set.thy "{x.False} = {}"; |
18 by (Fast_tac 1); |
16 by (Fast_tac 1); |
19 qed "Collect_False_empty"; |
17 qed "Collect_False_empty"; |
68 (* use new B rather than (A-{a}) to avoid infinite unfolding *) |
66 (* use new B rather than (A-{a}) to avoid infinite unfolding *) |
69 goal Set.thy "!!a. a:A ==> ? B. A = insert a B & a ~: B"; |
67 goal Set.thy "!!a. a:A ==> ? B. A = insert a B & a ~: B"; |
70 by (res_inst_tac [("x","A-{a}")] exI 1); |
68 by (res_inst_tac [("x","A-{a}")] exI 1); |
71 by (Fast_tac 1); |
69 by (Fast_tac 1); |
72 qed "mk_disjoint_insert"; |
70 qed "mk_disjoint_insert"; |
|
71 |
|
72 goal Set.thy |
|
73 "!!A. A~={} ==> (UN x:A. insert a (B x)) = insert a (UN x:A. B x)"; |
|
74 by (Fast_tac 1); |
|
75 qed "UN_insert_distrib"; |
|
76 |
|
77 goal Set.thy "(UN x. insert a (B x)) = insert a (UN x. B x)"; |
|
78 by (Fast_tac 1); |
|
79 qed "UN1_insert_distrib"; |
73 |
80 |
74 section "``"; |
81 section "``"; |
75 |
82 |
76 goal Set.thy "f``{} = {}"; |
83 goal Set.thy "f``{} = {}"; |
77 by (Fast_tac 1); |
84 by (Fast_tac 1); |
190 goal Set.thy "A Un UNIV = UNIV"; |
197 goal Set.thy "A Un UNIV = UNIV"; |
191 by (Fast_tac 1); |
198 by (Fast_tac 1); |
192 qed "Un_UNIV_right"; |
199 qed "Un_UNIV_right"; |
193 Addsimps[Un_UNIV_right]; |
200 Addsimps[Un_UNIV_right]; |
194 |
201 |
195 goal Set.thy "insert a B Un C = insert a (B Un C)"; |
202 goal Set.thy "(insert a B) Un C = insert a (B Un C)"; |
196 by (Fast_tac 1); |
203 by (Fast_tac 1); |
197 qed "Un_insert_left"; |
204 qed "Un_insert_left"; |
198 |
205 |
199 goal Set.thy "(A Int B) Un C = (A Un C) Int (B Un C)"; |
206 goal Set.thy "(A Int B) Un C = (A Un C) Int (B Un C)"; |
200 by (Fast_tac 1); |
207 by (Fast_tac 1); |