equal
deleted
inserted
replaced
52 by (Blast_tac 1); |
52 by (Blast_tac 1); |
53 qed "diag_iff"; |
53 qed "diag_iff"; |
54 |
54 |
55 Goal "diag(A) <= A Times A"; |
55 Goal "diag(A) <= A Times A"; |
56 by (Blast_tac 1); |
56 by (Blast_tac 1); |
57 qed "diag_subset_Sigma"; |
57 qed "diag_subset_Times"; |
58 |
58 |
59 |
59 |
60 |
60 |
61 (** Composition of two relations **) |
61 (** Composition of two relations **) |
62 |
62 |
159 Goal "Id^-1 = Id"; |
159 Goal "Id^-1 = Id"; |
160 by (Blast_tac 1); |
160 by (Blast_tac 1); |
161 qed "converse_Id"; |
161 qed "converse_Id"; |
162 Addsimps [converse_Id]; |
162 Addsimps [converse_Id]; |
163 |
163 |
|
164 Goal "(diag A) ^-1 = diag A"; |
|
165 by (Blast_tac 1); |
|
166 qed "converse_diag"; |
|
167 Addsimps [converse_diag]; |
|
168 |
164 (** Domain **) |
169 (** Domain **) |
165 |
170 |
166 Goalw [Domain_def] "a: Domain(r) = (EX y. (a,y): r)"; |
171 Goalw [Domain_def] "a: Domain(r) = (EX y. (a,y): r)"; |
167 by (Blast_tac 1); |
172 by (Blast_tac 1); |
168 qed "Domain_iff"; |
173 qed "Domain_iff"; |
223 |
228 |
224 Goal "Range Id = UNIV"; |
229 Goal "Range Id = UNIV"; |
225 by (Blast_tac 1); |
230 by (Blast_tac 1); |
226 qed "Range_Id"; |
231 qed "Range_Id"; |
227 Addsimps [Range_Id]; |
232 Addsimps [Range_Id]; |
|
233 |
|
234 Goal "Range (diag A) = A"; |
|
235 by Auto_tac; |
|
236 qed "Range_diag"; |
|
237 Addsimps [Range_diag]; |
228 |
238 |
229 Goal "Range(A Un B) = Range(A) Un Range(B)"; |
239 Goal "Range(A Un B) = Range(A) Un Range(B)"; |
230 by (Blast_tac 1); |
240 by (Blast_tac 1); |
231 qed "Range_Un_eq"; |
241 qed "Range_Un_eq"; |
232 |
242 |
282 |
292 |
283 Goal "Id ^^ A = A"; |
293 Goal "Id ^^ A = A"; |
284 by (Blast_tac 1); |
294 by (Blast_tac 1); |
285 qed "Image_Id"; |
295 qed "Image_Id"; |
286 |
296 |
287 Addsimps [Image_Id]; |
297 Goal "B<=A ==> diag A ^^ B = B"; |
|
298 by (Blast_tac 1); |
|
299 qed "Image_diag"; |
|
300 |
|
301 Addsimps [Image_Id, Image_diag]; |
288 |
302 |
289 qed_goal "Image_Int_subset" thy |
303 qed_goal "Image_Int_subset" thy |
290 "R ^^ (A Int B) <= R ^^ A Int R ^^ B" |
304 "R ^^ (A Int B) <= R ^^ A Int R ^^ B" |
291 (fn _ => [ Blast_tac 1 ]); |
305 (fn _ => [ Blast_tac 1 ]); |
292 |
306 |