equal
deleted
inserted
replaced
965 by (rule choice, auto simp add: *) |
965 by (rule choice, auto simp add: *) |
966 then obtain e where "\<And>i. e i > 0" "\<And>i. e i < 1" "\<And>i. ball (x i) (e i) \<subseteq> X i" |
966 then obtain e where "\<And>i. e i > 0" "\<And>i. e i < 1" "\<And>i. ball (x i) (e i) \<subseteq> X i" |
967 by blast |
967 by blast |
968 define m where "m = Min {(1/2)^(to_nat i) * e i|i. i \<in> I}" |
968 define m where "m = Min {(1/2)^(to_nat i) * e i|i. i \<in> I}" |
969 have "m > 0" if "I\<noteq>{}" |
969 have "m > 0" if "I\<noteq>{}" |
970 unfolding m_def apply (rule Min_grI) using \<open>finite I\<close> \<open>I \<noteq> {}\<close> \<open>\<And>i. e i > 0\<close> by auto |
970 unfolding m_def Min_gr_iff using \<open>finite I\<close> \<open>I \<noteq> {}\<close> \<open>\<And>i. e i > 0\<close> by auto |
971 moreover have "{y. dist x y < m} \<subseteq> U" |
971 moreover have "{y. dist x y < m} \<subseteq> U" |
972 proof (auto) |
972 proof (auto) |
973 fix y assume "dist x y < m" |
973 fix y assume "dist x y < m" |
974 have "y i \<in> X i" if "i \<in> I" for i |
974 have "y i \<in> X i" if "i \<in> I" for i |
975 proof - |
975 proof - |