equal
deleted
inserted
replaced
89 apply (rule continuous_intros *)+ |
89 apply (rule continuous_intros *)+ |
90 using ss_pos apply force |
90 using ss_pos apply force |
91 done |
91 done |
92 qed |
92 qed |
93 moreover have "\<lbrakk>U \<in> \<C>; x \<in> S\<rbrakk> \<Longrightarrow> 0 \<le> F U x" for U x |
93 moreover have "\<lbrakk>U \<in> \<C>; x \<in> S\<rbrakk> \<Longrightarrow> 0 \<le> F U x" for U x |
94 using nonneg [of x] by (simp add: F_def field_split_simps setdist_pos_le) |
94 using nonneg [of x] by (simp add: F_def field_split_simps) |
95 ultimately show "\<And>U. U \<in> \<C> \<Longrightarrow> continuous_on S (F U) \<and> (\<forall>x\<in>S. 0 \<le> F U x)" |
95 ultimately show "\<And>U. U \<in> \<C> \<Longrightarrow> continuous_on S (F U) \<and> (\<forall>x\<in>S. 0 \<le> F U x)" |
96 by metis |
96 by metis |
97 next |
97 next |
98 show "\<And>x U. \<lbrakk>U \<in> \<C>; x \<in> S; x \<notin> U\<rbrakk> \<Longrightarrow> F U x = 0" |
98 show "\<And>x U. \<lbrakk>U \<in> \<C>; x \<in> S; x \<notin> U\<rbrakk> \<Longrightarrow> F U x = 0" |
99 by (simp add: setdist_eq_0_sing_1 closure_def F_def) |
99 by (simp add: setdist_eq_0_sing_1 closure_def F_def) |
192 next |
192 next |
193 case False |
193 case False |
194 show ?thesis |
194 show ?thesis |
195 proof (cases "T = U") |
195 proof (cases "T = U") |
196 case True with \<open>S = {}\<close> \<open>a \<noteq> b\<close> show ?thesis |
196 case True with \<open>S = {}\<close> \<open>a \<noteq> b\<close> show ?thesis |
197 by (rule_tac f = "\<lambda>x. b" in that) (auto simp: continuous_on_const) |
197 by (rule_tac f = "\<lambda>x. b" in that) (auto) |
198 next |
198 next |
199 case False |
199 case False |
200 with UT closedin_subset obtain c where c: "c \<in> U" "c \<notin> T" |
200 with UT closedin_subset obtain c where c: "c \<in> U" "c \<notin> T" |
201 by fastforce |
201 by fastforce |
202 obtain f where f: "continuous_on U f" |
202 obtain f where f: "continuous_on U f" |
218 show ?thesis |
218 show ?thesis |
219 proof (cases "T = {}") |
219 proof (cases "T = {}") |
220 case True show ?thesis |
220 case True show ?thesis |
221 proof (cases "S = U") |
221 proof (cases "S = U") |
222 case True with \<open>T = {}\<close> \<open>a \<noteq> b\<close> show ?thesis |
222 case True with \<open>T = {}\<close> \<open>a \<noteq> b\<close> show ?thesis |
223 by (rule_tac f = "\<lambda>x. a" in that) (auto simp: continuous_on_const) |
223 by (rule_tac f = "\<lambda>x. a" in that) (auto) |
224 next |
224 next |
225 case False |
225 case False |
226 with US closedin_subset obtain c where c: "c \<in> U" "c \<notin> S" |
226 with US closedin_subset obtain c where c: "c \<in> U" "c \<notin> S" |
227 by fastforce |
227 by fastforce |
228 obtain f where f: "continuous_on U f" |
228 obtain f where f: "continuous_on U f" |
258 "\<And>x. x \<in> U \<Longrightarrow> f x \<in> closed_segment a b" |
258 "\<And>x. x \<in> U \<Longrightarrow> f x \<in> closed_segment a b" |
259 "\<And>x. x \<in> S \<Longrightarrow> f x = a" |
259 "\<And>x. x \<in> S \<Longrightarrow> f x = a" |
260 "\<And>x. x \<in> T \<Longrightarrow> f x = b" |
260 "\<And>x. x \<in> T \<Longrightarrow> f x = b" |
261 proof (cases "a = b") |
261 proof (cases "a = b") |
262 case True then show ?thesis |
262 case True then show ?thesis |
263 by (rule_tac f = "\<lambda>x. b" in that) (auto simp: continuous_on_const) |
263 by (rule_tac f = "\<lambda>x. b" in that) (auto) |
264 next |
264 next |
265 case False |
265 case False |
266 then show ?thesis |
266 then show ?thesis |
267 apply (rule Urysohn_local_strong [OF assms]) |
267 apply (rule Urysohn_local_strong [OF assms]) |
268 apply (erule that, assumption) |
268 apply (erule that, assumption) |