src/HOL/Analysis/Arcwise_Connected.thy
changeset 67613 ce654b0e6d69
parent 66912 a99a7cbf0fb5
child 67968 a5ad4c015d1c
equal deleted inserted replaced
67610:4939494ed791 67613:ce654b0e6d69
    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)