equal
deleted
inserted
replaced
201 assume "x \<notin> A" |
201 assume "x \<notin> A" |
202 with A show "A \<subseteq> F" by (simp add: subset_insert_iff) |
202 with A show "A \<subseteq> F" by (simp add: subset_insert_iff) |
203 qed |
203 qed |
204 qed |
204 qed |
205 qed |
205 qed |
|
206 |
|
207 lemma rev_finite_subset: "finite B ==> A \<subseteq> B ==> finite A" |
|
208 by (rule finite_subset) |
206 |
209 |
207 lemma finite_Un [iff]: "finite (F Un G) = (finite F & finite G)" |
210 lemma finite_Un [iff]: "finite (F Un G) = (finite F & finite G)" |
208 by (blast intro: finite_subset [of _ "X Un Y", standard] finite_UnI) |
211 by (blast intro: finite_subset [of _ "X Un Y", standard] finite_UnI) |
209 |
212 |
210 lemma finite_Collect_disjI[simp]: |
213 lemma finite_Collect_disjI[simp]: |
352 apply (induct set: finite) |
355 apply (induct set: finite) |
353 apply simp_all |
356 apply simp_all |
354 apply (subst vimage_insert) |
357 apply (subst vimage_insert) |
355 apply (simp add: finite_Un finite_subset [OF inj_vimage_singleton]) |
358 apply (simp add: finite_Un finite_subset [OF inj_vimage_singleton]) |
356 done |
359 done |
|
360 |
|
361 lemma finite_vimageD: |
|
362 assumes fin: "finite (h -` F)" and surj: "surj h" |
|
363 shows "finite F" |
|
364 proof - |
|
365 have "finite (h ` (h -` F))" using fin by (rule finite_imageI) |
|
366 also have "h ` (h -` F) = F" using surj by (rule surj_image_vimage_eq) |
|
367 finally show "finite F" . |
|
368 qed |
|
369 |
|
370 lemma finite_vimage_iff: "bij h \<Longrightarrow> finite (h -` F) \<longleftrightarrow> finite F" |
|
371 unfolding bij_def by (auto elim: finite_vimageD finite_vimageI) |
357 |
372 |
358 |
373 |
359 text {* The finite UNION of finite sets *} |
374 text {* The finite UNION of finite sets *} |
360 |
375 |
361 lemma finite_UN_I: "finite A ==> (!!a. a:A ==> finite (B a)) ==> finite (UN a:A. B a)" |
376 lemma finite_UN_I: "finite A ==> (!!a. a:A ==> finite (B a)) ==> finite (UN a:A. B a)" |