160 |
160 |
161 lemma inj_strengthen_type: |
161 lemma inj_strengthen_type: |
162 "[| f \<in> inj(A, B); !!a. a \<in> A ==> f`a \<in> C |] ==> f \<in> inj(A,C)" |
162 "[| f \<in> inj(A, B); !!a. a \<in> A ==> f`a \<in> C |] ==> f \<in> inj(A,C)" |
163 by (unfold inj_def, blast intro: Pi_type) |
163 by (unfold inj_def, blast intro: Pi_type) |
164 |
164 |
165 lemma nat_not_Finite: "~ Finite(nat)" |
|
166 by (unfold Finite_def, blast dest: eqpoll_imp_lepoll ltI lt_not_lepoll) |
|
167 |
|
168 lemmas le_imp_lepoll = le_imp_subset [THEN subset_imp_lepoll] |
|
169 |
|
170 (* ********************************************************************** *) |
165 (* ********************************************************************** *) |
171 (* Another elimination rule for \<exists>! *) |
166 (* Another elimination rule for \<exists>! *) |
172 (* ********************************************************************** *) |
167 (* ********************************************************************** *) |
173 |
168 |
174 lemma ex1_two_eq: "[| \<exists>! x. P(x); P(x); P(y) |] ==> x=y" |
169 lemma ex1_two_eq: "[| \<exists>! x. P(x); P(x); P(y) |] ==> x=y" |
175 by blast |
170 by blast |
176 |
171 |
177 (* ********************************************************************** *) |
172 (* ********************************************************************** *) |
178 (* image of a surjection *) |
|
179 (* ********************************************************************** *) |
|
180 |
|
181 lemma surj_image_eq: "f \<in> surj(A, B) ==> f``A = B" |
|
182 apply (unfold surj_def) |
|
183 apply (erule CollectE) |
|
184 apply (rule image_fun [THEN ssubst], assumption, rule subset_refl) |
|
185 apply (blast dest: apply_type) |
|
186 done |
|
187 |
|
188 |
|
189 (* ********************************************************************** *) |
|
190 (* Lemmas used in the proofs like WO? ==> AC? *) |
173 (* Lemmas used in the proofs like WO? ==> AC? *) |
191 (* ********************************************************************** *) |
174 (* ********************************************************************** *) |
192 |
175 |
193 lemma first_in_B: |
176 lemma first_in_B: |
194 "[| well_ord(\<Union>(A),r); 0\<notin>A; B \<in> A |] ==> (THE b. first(b,B,r)) \<in> B" |
177 "[| well_ord(\<Union>(A),r); 0 \<notin> A; B \<in> A |] ==> (THE b. first(b,B,r)) \<in> B" |
195 by (blast dest!: well_ord_imp_ex1_first |
178 by (blast dest!: well_ord_imp_ex1_first |
196 [THEN theI, THEN first_def [THEN def_imp_iff, THEN iffD1]]) |
179 [THEN theI, THEN first_def [THEN def_imp_iff, THEN iffD1]]) |
197 |
180 |
198 lemma ex_choice_fun: "[| well_ord(\<Union>(A), R); 0\<notin>A |] ==> \<exists>f. f:(\<Pi> X \<in> A. X)" |
181 lemma ex_choice_fun: "[| well_ord(\<Union>(A), R); 0 \<notin> A |] ==> \<exists>f. f \<in> (\<Pi> X \<in> A. X)" |
199 by (fast elim!: first_in_B intro!: lam_type) |
182 by (fast elim!: first_in_B intro!: lam_type) |
200 |
183 |
201 lemma ex_choice_fun_Pow: "well_ord(A, R) ==> \<exists>f. f:(\<Pi> X \<in> Pow(A)-{0}. X)" |
184 lemma ex_choice_fun_Pow: "well_ord(A, R) ==> \<exists>f. f \<in> (\<Pi> X \<in> Pow(A)-{0}. X)" |
202 by (fast elim!: well_ord_subset [THEN ex_choice_fun]) |
185 by (fast elim!: well_ord_subset [THEN ex_choice_fun]) |
203 |
186 |
204 |
187 |
205 (* ********************************************************************** *) |
188 (* ********************************************************************** *) |
206 (* Lemmas needed to state when a finite relation is a function. *) |
189 (* Lemmas needed to state when a finite relation is a function. *) |