src/HOL/Analysis/Continuous_Extension.thy
changeset 71172 575b3a818de5
parent 70817 dd675800469d
child 71255 4258ee13f5d4
equal deleted inserted replaced
71171:a25b6f79043f 71172:575b3a818de5
    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)