src/HOL/Multivariate_Analysis/Topology_Euclidean_Space.thy
changeset 60040 1fa1023b13b9
parent 60017 b785d6d06430
child 60141 833adf7db7d8
equal deleted inserted replaced
60039:d55937a8f97e 60040:1fa1023b13b9
  3329   have ev_Z: "\<And>z. z \<in> Z \<Longrightarrow> eventually (\<lambda>x. x \<in> z) F"
  3329   have ev_Z: "\<And>z. z \<in> Z \<Longrightarrow> eventually (\<lambda>x. x \<in> z) F"
  3330     unfolding Z_def by (auto elim: eventually_elim1 intro: set_mp[OF closure_subset])
  3330     unfolding Z_def by (auto elim: eventually_elim1 intro: set_mp[OF closure_subset])
  3331   have "(\<forall>B \<subseteq> Z. finite B \<longrightarrow> U \<inter> \<Inter>B \<noteq> {})"
  3331   have "(\<forall>B \<subseteq> Z. finite B \<longrightarrow> U \<inter> \<Inter>B \<noteq> {})"
  3332   proof (intro allI impI)
  3332   proof (intro allI impI)
  3333     fix B assume "finite B" "B \<subseteq> Z"
  3333     fix B assume "finite B" "B \<subseteq> Z"
  3334     with `finite B` ev_Z have "eventually (\<lambda>x. \<forall>b\<in>B. x \<in> b) F"
  3334     with `finite B` ev_Z F(2) have "eventually (\<lambda>x. x \<in> U \<inter> (\<Inter>B)) F"
  3335       by (auto intro!: eventually_Ball_finite)
  3335       by (auto simp: eventually_ball_finite_distrib eventually_conj_iff)
  3336     with F(2) have "eventually (\<lambda>x. x \<in> U \<inter> (\<Inter>B)) F"
       
  3337       by eventually_elim auto
       
  3338     with F show "U \<inter> \<Inter>B \<noteq> {}"
  3336     with F show "U \<inter> \<Inter>B \<noteq> {}"
  3339       by (intro notI) (simp add: eventually_False)
  3337       by (intro notI) (simp add: eventually_False)
  3340   qed
  3338   qed
  3341   ultimately have "U \<inter> \<Inter>Z \<noteq> {}"
  3339   ultimately have "U \<inter> \<Inter>Z \<noteq> {}"
  3342     using `compact U` unfolding compact_fip by blast
  3340     using `compact U` unfolding compact_fip by blast
  7504   then have "continuous_on s g"
  7502   then have "continuous_on s g"
  7505     unfolding continuous_on_iff by auto
  7503     unfolding continuous_on_iff by auto
  7506   then have cont: "continuous_on ?D (\<lambda>x. dist ((g \<circ> fst) x) (snd x))"
  7504   then have cont: "continuous_on ?D (\<lambda>x. dist ((g \<circ> fst) x) (snd x))"
  7507     unfolding continuous_on_eq_continuous_within
  7505     unfolding continuous_on_eq_continuous_within
  7508     by (intro continuous_dist ballI continuous_within_compose)
  7506     by (intro continuous_dist ballI continuous_within_compose)
  7509        (auto intro!:  continuous_fst continuous_snd continuous_within_id simp: image_image)
  7507        (auto intro!: continuous_fst continuous_snd continuous_within_id simp: image_image)
  7510 
  7508 
  7511   obtain a where "a \<in> s" and le: "\<And>x. x \<in> s \<Longrightarrow> dist (g a) a \<le> dist (g x) x"
  7509   obtain a where "a \<in> s" and le: "\<And>x. x \<in> s \<Longrightarrow> dist (g a) a \<le> dist (g x) x"
  7512     using continuous_attains_inf[OF D cont] by auto
  7510     using continuous_attains_inf[OF D cont] by auto
  7513 
  7511 
  7514   have "g a = a"
  7512   have "g a = a"