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) |