equal
deleted
inserted
replaced
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)" |