src/HOL/Finite_Set.thy
changeset 57025 e7fd64f82876
parent 56218 1c3f1f2431f9
child 57447 87429bdecad5
equal deleted inserted replaced
57024:c9e98c2498fd 57025:e7fd64f82876
   413   then have "\<exists>n f. B = f ` {i::nat. i < n}" by blast
   413   then have "\<exists>n f. B = f ` {i::nat. i < n}" by blast
   414   then show ?thesis
   414   then show ?thesis
   415     by (auto simp add: finite_conv_nat_seg_image)
   415     by (auto simp add: finite_conv_nat_seg_image)
   416 qed
   416 qed
   417 
   417 
       
   418 lemma finite_cartesian_product_iff:
       
   419   "finite (A \<times> B) \<longleftrightarrow> (A = {} \<or> B = {} \<or> (finite A \<and> finite B))"
       
   420   by (auto dest: finite_cartesian_productD1 finite_cartesian_productD2 finite_cartesian_product)
       
   421 
   418 lemma finite_prod: 
   422 lemma finite_prod: 
   419   "finite (UNIV :: ('a \<times> 'b) set) \<longleftrightarrow> finite (UNIV :: 'a set) \<and> finite (UNIV :: 'b set)"
   423   "finite (UNIV :: ('a \<times> 'b) set) \<longleftrightarrow> finite (UNIV :: 'a set) \<and> finite (UNIV :: 'b set)"
   420 by(auto simp add: UNIV_Times_UNIV[symmetric] simp del: UNIV_Times_UNIV 
   424   using finite_cartesian_product_iff[of UNIV UNIV] by simp
   421    dest: finite_cartesian_productD1 finite_cartesian_productD2)
       
   422 
   425 
   423 lemma finite_Pow_iff [iff]:
   426 lemma finite_Pow_iff [iff]:
   424   "finite (Pow A) \<longleftrightarrow> finite A"
   427   "finite (Pow A) \<longleftrightarrow> finite A"
   425 proof
   428 proof
   426   assume "finite (Pow A)"
   429   assume "finite (Pow A)"