equal
deleted
inserted
replaced
19 proof - |
19 proof - |
20 obtain B :: "nat \<Rightarrow> 'a set" |
20 obtain B :: "nat \<Rightarrow> 'a set" |
21 where "inj B" "\<And>n. open(B n)" and open_cov: "\<And>S. open S \<Longrightarrow> \<exists>K. S = \<Union>(B ` K)" |
21 where "inj B" "\<And>n. open(B n)" and open_cov: "\<And>S. open S \<Longrightarrow> \<exists>K. S = \<Union>(B ` K)" |
22 by (metis Setcompr_eq_image that univ_second_countable_sequence) |
22 by (metis Setcompr_eq_image that univ_second_countable_sequence) |
23 define A where "A \<equiv> rec_nat S (\<lambda>n a. if \<exists>U. U \<subseteq> a \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
23 define A where "A \<equiv> rec_nat S (\<lambda>n a. if \<exists>U. U \<subseteq> a \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
24 then @U. U \<subseteq> a \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
24 then SOME U. U \<subseteq> a \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
25 else a)" |
25 else a)" |
26 have [simp]: "A 0 = S" |
26 have [simp]: "A 0 = S" |
27 by (simp add: A_def) |
27 by (simp add: A_def) |
28 have ASuc: "A(Suc n) = (if \<exists>U. U \<subseteq> A n \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
28 have ASuc: "A(Suc n) = (if \<exists>U. U \<subseteq> A n \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
29 then @U. U \<subseteq> A n \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
29 then SOME U. U \<subseteq> A n \<and> closed U \<and> \<phi> U \<and> U \<inter> (B n) = {} |
30 else A n)" for n |
30 else A n)" for n |
31 by (auto simp: A_def) |
31 by (auto simp: A_def) |
32 have sub: "\<And>n. A(Suc n) \<subseteq> A n" |
32 have sub: "\<And>n. A(Suc n) \<subseteq> A n" |
33 by (auto simp: ASuc dest!: someI_ex) |
33 by (auto simp: ASuc dest!: someI_ex) |
34 have subS: "A n \<subseteq> S" for n |
34 have subS: "A n \<subseteq> S" for n |
1799 qed (meson \<phi>_def) |
1799 qed (meson \<phi>_def) |
1800 then have "T \<subseteq> {0..1}" "0 \<in> T" "1 \<in> T" |
1800 then have "T \<subseteq> {0..1}" "0 \<in> T" "1 \<in> T" |
1801 and peq: "\<And>x y. \<lbrakk>x \<in> T; y \<in> T; open_segment x y \<inter> T = {}\<rbrakk> \<Longrightarrow> p x = p y" |
1801 and peq: "\<And>x y. \<lbrakk>x \<in> T; y \<in> T; open_segment x y \<inter> T = {}\<rbrakk> \<Longrightarrow> p x = p y" |
1802 unfolding \<phi>_def by metis+ |
1802 unfolding \<phi>_def by metis+ |
1803 then have "T \<noteq> {}" by auto |
1803 then have "T \<noteq> {}" by auto |
1804 define h where "h \<equiv> \<lambda>x. p(@y. y \<in> T \<and> open_segment x y \<inter> T = {})" |
1804 define h where "h \<equiv> \<lambda>x. p(SOME y. y \<in> T \<and> open_segment x y \<inter> T = {})" |
1805 have "p y = p z" if "y \<in> T" "z \<in> T" and xyT: "open_segment x y \<inter> T = {}" and xzT: "open_segment x z \<inter> T = {}" |
1805 have "p y = p z" if "y \<in> T" "z \<in> T" and xyT: "open_segment x y \<inter> T = {}" and xzT: "open_segment x z \<inter> T = {}" |
1806 for x y z |
1806 for x y z |
1807 proof (cases "x \<in> T") |
1807 proof (cases "x \<in> T") |
1808 case True |
1808 case True |
1809 with that show ?thesis by (metis \<open>\<phi> T\<close> \<phi>_def) |
1809 with that show ?thesis by (metis \<open>\<phi> T\<close> \<phi>_def) |