src/HOL/Relation.ML
changeset 1465 5d7a7e439cec
parent 1454 d0266c81a85e
child 1552 6f71b5d46700
equal deleted inserted replaced
1464:a608f83e3421 1465:5d7a7e439cec
     1 (*  Title: 	Relation.ML
     1 (*  Title:      Relation.ML
     2     ID:         $Id$
     2     ID:         $Id$
     3     Authors: 	Riccardo Mattolini, Dip. Sistemi e Informatica
     3     Authors:    Riccardo Mattolini, Dip. Sistemi e Informatica
     4         	Lawrence C Paulson, Cambridge University Computer Laboratory
     4                 Lawrence C Paulson, Cambridge University Computer Laboratory
     5     Copyright   1994 Universita' di Firenze
     5     Copyright   1994 Universita' di Firenze
     6     Copyright   1993  University of Cambridge
     6     Copyright   1993  University of Cambridge
     7 *)
     7 *)
     8 
     8 
     9 val RSLIST = curry (op MRS);
     9 val RSLIST = curry (op MRS);
    98   [ (rtac (major RS CollectE) 1),
    98   [ (rtac (major RS CollectE) 1),
    99     (REPEAT (eresolve_tac [splitE, bexE,exE, conjE, minor] 1)),
    99     (REPEAT (eresolve_tac [splitE, bexE,exE, conjE, minor] 1)),
   100     (assume_tac 1) ]);
   100     (assume_tac 1) ]);
   101 
   101 
   102 val converse_cs = comp_cs addSIs [converseI] 
   102 val converse_cs = comp_cs addSIs [converseI] 
   103 			  addSEs [converseD,converseE];
   103                           addSEs [converseD,converseE];
   104 
   104 
   105 (** Domain **)
   105 (** Domain **)
   106 
   106 
   107 qed_goalw "Domain_iff" Relation.thy [Domain_def]
   107 qed_goalw "Domain_iff" Relation.thy [Domain_def]
   108     "a: Domain(r) = (EX y. (a,y): r)"
   108     "a: Domain(r) = (EX y. (a,y): r)"
   136  (fn _ => [ fast_tac (comp_cs addIs [RangeI]) 1 ]);
   136  (fn _ => [ fast_tac (comp_cs addIs [RangeI]) 1 ]);
   137 
   137 
   138 qed_goal "Image_singleton_iff" Relation.thy
   138 qed_goal "Image_singleton_iff" Relation.thy
   139     "(b : r^^{a}) = ((a,b):r)"
   139     "(b : r^^{a}) = ((a,b):r)"
   140  (fn _ => [ rtac (Image_iff RS trans) 1,
   140  (fn _ => [ rtac (Image_iff RS trans) 1,
   141 	    fast_tac comp_cs 1 ]);
   141             fast_tac comp_cs 1 ]);
   142 
   142 
   143 qed_goalw "ImageI" Relation.thy [Image_def]
   143 qed_goalw "ImageI" Relation.thy [Image_def]
   144     "!!a b r. [| (a,b): r;  a:A |] ==> b : r^^A"
   144     "!!a b r. [| (a,b): r;  a:A |] ==> b : r^^A"
   145  (fn _ => [ (REPEAT (ares_tac [CollectI,RangeI,bexI] 1)),
   145  (fn _ => [ (REPEAT (ares_tac [CollectI,RangeI,bexI] 1)),
   146             (resolve_tac [conjI ] 1),
   146             (resolve_tac [conjI ] 1),
   147             (resolve_tac [RangeI] 1),
   147             (rtac RangeI 1),
   148             (REPEAT (fast_tac set_cs 1))]);
   148             (REPEAT (fast_tac set_cs 1))]);
   149 
   149 
   150 qed_goalw "ImageE" Relation.thy [Image_def]
   150 qed_goalw "ImageE" Relation.thy [Image_def]
   151     "[| b: r^^A;  !!x.[| (x,b): r;  x:A |] ==> P |] ==> P"
   151     "[| b: r^^A;  !!x.[| (x,b): r;  x:A |] ==> P |] ==> P"
   152  (fn major::prems=>
   152  (fn major::prems=>