src/HOL/Relation.ML
changeset 5995 450cd1f0270b
parent 5978 fa2c2dd74f8c
child 5998 b2ecd577b8a3
equal deleted inserted replaced
5994:7b84677315ed 5995:450cd1f0270b
    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