# HG changeset patch # User paulson # Date 1509458359 0 # Node ID 289f390c4e578eb2e04d76573ca2fc152b5cb76a # Parent 0230af0f3c590e728a27df19c8c5add4563e881a A few more topological results. And made some slow proofs faster diff -r 0230af0f3c59 -r 289f390c4e57 src/HOL/Analysis/Further_Topology.thy --- a/src/HOL/Analysis/Further_Topology.thy Tue Oct 31 07:11:03 2017 +0000 +++ b/src/HOL/Analysis/Further_Topology.thy Tue Oct 31 13:59:19 2017 +0000 @@ -3799,7 +3799,7 @@ by (simp add: Int_assoc openin_INT2 [OF \finite C\ \C \ {}\]) with xin obtain d2 where "d2>0" and d2: "\u v. \u \ S; dist u x < d2; v \ C\ \ f u \ T \ ball v (e/2) \ {}" - by (force simp: openin_euclidean_subtopology_iff) + unfolding openin_euclidean_subtopology_iff using xin by fastforce show ?thesis proof (intro that conjI ballI) show "0 < min d1 d2" @@ -3827,7 +3827,7 @@ qed -subsection\complex logs exist on various "well-behaved" sets\ +subsection\Complex logs exist on various "well-behaved" sets\ lemma continuous_logarithm_on_contractible: fixes f :: "'a::real_normed_vector \ complex" @@ -3838,7 +3838,7 @@ using nullhomotopic_from_contractible assms by (metis imageE subset_Compl_singleton) then show ?thesis - by (metis inessential_eq_continuous_logarithm of_real_0 that) + by (metis inessential_eq_continuous_logarithm that) qed lemma continuous_logarithm_on_simply_connected: @@ -3896,6 +3896,72 @@ qed +subsection\Another simple case where sphere maps are nullhomotopic.\ + +lemma inessential_spheremap_2_aux: + fixes f :: "'a::euclidean_space \ complex" + assumes 2: "2 < DIM('a)" and contf: "continuous_on (sphere a r) f" + and fim: "f `(sphere a r) \ (sphere 0 1)" + obtains c where "homotopic_with (\z. True) (sphere a r) (sphere 0 1) f (\x. c)" +proof - + obtain g where contg: "continuous_on (sphere a r) g" + and feq: "\x. x \ sphere a r \ f x = exp(g x)" + proof (rule continuous_logarithm_on_simply_connected [OF contf]) + show "simply_connected (sphere a r)" + using 2 by (simp add: simply_connected_sphere_eq) + show "locally path_connected (sphere a r)" + by (simp add: locally_path_connected_sphere) + show "\z. z \ sphere a r \ f z \ 0" + using fim by force + qed auto + have "\g. continuous_on (sphere a r) g \ (\x\sphere a r. f x = exp (\ * complex_of_real (g x)))" + proof (intro exI conjI) + show "continuous_on (sphere a r) (Im \ g)" + by (intro contg continuous_intros continuous_on_compose) + show "\x\sphere a r. f x = exp (\ * complex_of_real ((Im \ g) x))" + using exp_eq_polar feq fim norm_exp_eq_Re by auto + qed + with inessential_eq_continuous_logarithm_circle that show ?thesis + by metis +qed + +lemma inessential_spheremap_2: + fixes f :: "'a::euclidean_space \ 'b::euclidean_space" + assumes a2: "2 < DIM('a)" and b2: "DIM('b) = 2" + and contf: "continuous_on (sphere a r) f" and fim: "f `(sphere a r) \ (sphere b s)" + obtains c where "homotopic_with (\z. True) (sphere a r) (sphere b s) f (\x. c)" +proof (cases "s \ 0") + case True + then show ?thesis + using contf contractible_sphere fim nullhomotopic_into_contractible that by blast +next + case False + then have "sphere b s homeomorphic sphere (0::complex) 1" + using assms by (simp add: homeomorphic_spheres_gen) + then obtain h k where hk: "homeomorphism (sphere b s) (sphere (0::complex) 1) h k" + by (auto simp: homeomorphic_def) + then have conth: "continuous_on (sphere b s) h" + and contk: "continuous_on (sphere 0 1) k" + and him: "h ` sphere b s \ sphere 0 1" + and kim: "k ` sphere 0 1 \ sphere b s" + by (simp_all add: homeomorphism_def) + obtain c where "homotopic_with (\z. True) (sphere a r) (sphere 0 1) (h \ f) (\x. c)" + proof (rule inessential_spheremap_2_aux [OF a2]) + show "continuous_on (sphere a r) (h \ f)" + by (meson continuous_on_compose [OF contf] conth continuous_on_subset fim) + show "(h \ f) ` sphere a r \ sphere 0 1" + using fim him by force + qed auto + then have "homotopic_with (\f. True) (sphere a r) (sphere b s) (k \ (h \ f)) (k \ (\x. c))" + by (rule homotopic_compose_continuous_left [OF _ contk kim]) + then have "homotopic_with (\z. True) (sphere a r) (sphere b s) f (\x. k c)" + apply (rule homotopic_with_eq, auto) + by (metis fim hk homeomorphism_def image_subset_iff mem_sphere) + then show ?thesis + by (metis that) +qed + + subsection\Holomorphic logarithms and square roots.\ lemma contractible_imp_holomorphic_log: diff -r 0230af0f3c59 -r 289f390c4e57 src/HOL/Analysis/Path_Connected.thy --- a/src/HOL/Analysis/Path_Connected.thy Tue Oct 31 07:11:03 2017 +0000 +++ b/src/HOL/Analysis/Path_Connected.thy Tue Oct 31 13:59:19 2017 +0000 @@ -4864,7 +4864,7 @@ assumes "locally P S" "openin (subtopology euclidean S) w" "x \ w" obtains u v where "openin (subtopology euclidean S) u" "P v" "x \ u" "u \ v" "v \ w" -using assms by (force simp: locally_def) + using assms unfolding locally_def by meson lemma locally_mono: assumes "locally P S" "\t. P t \ Q t" @@ -4981,7 +4981,7 @@ have contvf: "continuous_on v f" using \v \ S\ continuous_on_subset f(3) by blast have contvg: "continuous_on (f ` v) g" - using \f ` v \ W\ \W \ t\ continuous_on_subset g(3) by blast + using \f ` v \ W\ \W \ t\ continuous_on_subset [OF g(3)] by blast have homv: "homeomorphism v (f ` v) f g" using \v \ S\ \W \ t\ f apply (simp add: homeomorphism_def contvf contvg, auto) @@ -5903,7 +5903,7 @@ obtain u where u: "openin (subtopology euclidean S) u \ x \ u \ u \ t \ (\y. y \ u \ (\c. connected c \ c \ t \ x \ c \ y \ c))" - by auto (meson subsetD in_components_subset) + using in_components_subset by auto obtain F :: "'a set \ 'a set \ 'a" where "\x y. (\z. z \ x \ y = connected_component_set x z) = (F x y \ x \ y = connected_component_set x (F x y))" by moura