src/HOL/Fun.thy
changeset 63323 814541a57d89
parent 63322 bc1f17d45e91
child 63324 1e98146f3581
equal deleted inserted replaced
63322:bc1f17d45e91 63323:814541a57d89
   791   using assms UNIV_I by (rule the_inv_into_f_f)
   791   using assms UNIV_I by (rule the_inv_into_f_f)
   792 
   792 
   793 
   793 
   794 subsection \<open>Cantor's Paradox\<close>
   794 subsection \<open>Cantor's Paradox\<close>
   795 
   795 
   796 lemma Cantors_paradox: "\<not> (\<exists>f. f ` A = Pow A)"
   796 theorem Cantors_paradox: "\<nexists>f. f ` A = Pow A"
   797 proof clarify
   797 proof
   798   fix f
   798   assume "\<exists>f. f ` A = Pow A"
   799   assume "f ` A = Pow A"
   799   then obtain f where f: "f ` A = Pow A" ..
   800   then have *: "Pow A \<subseteq> f ` A" by blast
       
   801   let ?X = "{a \<in> A. a \<notin> f a}"
   800   let ?X = "{a \<in> A. a \<notin> f a}"
   802   have "?X \<in> Pow A" unfolding Pow_def by auto
   801   have "?X \<in> Pow A" by blast
   803   with * obtain x where "x \<in> A \<and> f x = ?X" by blast
   802   then have "?X \<in> f ` A" by (simp only: f)
   804   then show False by best
   803   then obtain x where "x \<in> A" and "f x = ?X" by blast
       
   804   then show False by blast
   805 qed
   805 qed
   806 
   806 
   807 
   807 
   808 subsection \<open>Setup\<close>
   808 subsection \<open>Setup\<close>
   809 
   809