src/HOL/Relation.thy
changeset 54147 97a8ff4e4ac9
parent 53680 c5096c22892b
child 54410 0a578fb7fb73
equal deleted inserted replaced
54146:97f69d44f732 54147:97a8ff4e4ac9
   476   by (simp add: Id_on_def) 
   476   by (simp add: Id_on_def) 
   477 
   477 
   478 lemma Id_on_eqI: "a = b ==> a : A ==> (a, b) : Id_on A"
   478 lemma Id_on_eqI: "a = b ==> a : A ==> (a, b) : Id_on A"
   479   by (simp add: Id_on_def)
   479   by (simp add: Id_on_def)
   480 
   480 
   481 lemma Id_onI [intro!,no_atp]: "a : A ==> (a, a) : Id_on A"
   481 lemma Id_onI [intro!]: "a : A ==> (a, a) : Id_on A"
   482   by (rule Id_on_eqI) (rule refl)
   482   by (rule Id_on_eqI) (rule refl)
   483 
   483 
   484 lemma Id_onE [elim!]:
   484 lemma Id_onE [elim!]:
   485   "c : Id_on A ==> (!!x. x : A ==> c = (x, x) ==> P) ==> P"
   485   "c : Id_on A ==> (!!x. x : A ==> c = (x, x) ==> P) ==> P"
   486   -- {* The general elimination rule. *}
   486   -- {* The general elimination rule. *}
   937 
   937 
   938 definition Image :: "('a \<times> 'b) set \<Rightarrow> 'a set \<Rightarrow> 'b set" (infixr "``" 90)
   938 definition Image :: "('a \<times> 'b) set \<Rightarrow> 'a set \<Rightarrow> 'b set" (infixr "``" 90)
   939 where
   939 where
   940   "r `` s = {y. \<exists>x\<in>s. (x, y) \<in> r}"
   940   "r `` s = {y. \<exists>x\<in>s. (x, y) \<in> r}"
   941 
   941 
   942 declare Image_def [no_atp]
       
   943 
       
   944 lemma Image_iff: "(b : r``A) = (EX x:A. (x, b) : r)"
   942 lemma Image_iff: "(b : r``A) = (EX x:A. (x, b) : r)"
   945   by (simp add: Image_def)
   943   by (simp add: Image_def)
   946 
   944 
   947 lemma Image_singleton: "r``{a} = {b. (a, b) : r}"
   945 lemma Image_singleton: "r``{a} = {b. (a, b) : r}"
   948   by (simp add: Image_def)
   946   by (simp add: Image_def)
   949 
   947 
   950 lemma Image_singleton_iff [iff]: "(b : r``{a}) = ((a, b) : r)"
   948 lemma Image_singleton_iff [iff]: "(b : r``{a}) = ((a, b) : r)"
   951   by (rule Image_iff [THEN trans]) simp
   949   by (rule Image_iff [THEN trans]) simp
   952 
   950 
   953 lemma ImageI [intro,no_atp]: "(a, b) : r ==> a : A ==> b : r``A"
   951 lemma ImageI [intro]: "(a, b) : r ==> a : A ==> b : r``A"
   954   by (unfold Image_def) blast
   952   by (unfold Image_def) blast
   955 
   953 
   956 lemma ImageE [elim!]:
   954 lemma ImageE [elim!]:
   957   "b : r `` A ==> (!!x. (x, b) : r ==> x : A ==> P) ==> P"
   955   "b : r `` A ==> (!!x. (x, b) : r ==> x : A ==> P) ==> P"
   958   by (unfold Image_def) (iprover elim!: CollectE bexE)
   956   by (unfold Image_def) (iprover elim!: CollectE bexE)