--- a/src/HOL/Library/Countable_Set.thy Tue May 20 16:52:59 2014 +0200
+++ b/src/HOL/Library/Countable_Set.thy Tue May 20 19:24:39 2014 +0200
@@ -283,4 +283,17 @@
shows "(\<forall>s\<in>S. P s) \<longleftrightarrow> (\<forall>n::nat. from_nat_into S n \<in> S \<longrightarrow> P (from_nat_into S n))"
using S[THEN subset_range_from_nat_into] by auto
+lemma finite_sequence_to_countable_set:
+ assumes "countable X" obtains F where "\<And>i. F i \<subseteq> X" "\<And>i. F i \<subseteq> F (Suc i)" "\<And>i. finite (F i)" "(\<Union>i. F i) = X"
+proof - show thesis
+ apply (rule that[of "\<lambda>i. if X = {} then {} else from_nat_into X ` {..i}"])
+ apply (auto simp: image_iff Ball_def intro: from_nat_into split: split_if_asm)
+ proof -
+ fix x n assume "x \<in> X" "\<forall>i m. m \<le> i \<longrightarrow> x \<noteq> from_nat_into X m"
+ with from_nat_into_surj[OF `countable X` `x \<in> X`]
+ show False
+ by auto
+ qed
+qed
+
end