src/HOL/Finite_Set.thy
changeset 34111 1b015caba46c
parent 34007 aea892559fc5
child 34114 f3fd41b9c017
equal deleted inserted replaced
34110:4c113c744b86 34111:1b015caba46c
   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)"