equal
deleted
inserted
replaced
2038 moreover |
2038 moreover |
2039 have eq: "f ` U = h ` (k \<circ> f \<circ> h \<circ> k) ` U" |
2039 have eq: "f ` U = h ` (k \<circ> f \<circ> h \<circ> k) ` U" |
2040 unfolding image_comp [symmetric] using \<open>U \<subseteq> S\<close> fim |
2040 unfolding image_comp [symmetric] using \<open>U \<subseteq> S\<close> fim |
2041 by (metis homeomorphism_image2 homeomorphism_of_subsets homkh subset_image_iff) |
2041 by (metis homeomorphism_image2 homeomorphism_of_subsets homkh subset_image_iff) |
2042 ultimately show ?thesis |
2042 ultimately show ?thesis |
2043 by (metis (no_types, hide_lams) homeomorphism_imp_open_map homhk image_comp open_openin subtopology_UNIV) |
2043 by (metis (no_types, opaque_lifting) homeomorphism_imp_open_map homhk image_comp open_openin subtopology_UNIV) |
2044 qed |
2044 qed |
2045 |
2045 |
2046 lemma inv_of_domain_ss1: |
2046 lemma inv_of_domain_ss1: |
2047 fixes f :: "'a \<Rightarrow> 'a::euclidean_space" |
2047 fixes f :: "'a \<Rightarrow> 'a::euclidean_space" |
2048 assumes contf: "continuous_on U f" and injf: "inj_on f U" and fim: "f ` U \<subseteq> S" |
2048 assumes contf: "continuous_on U f" and injf: "inj_on f U" and fim: "f ` U \<subseteq> S" |
5481 using homeomorphic_ball01_UNIV homeomorphic_def by blast |
5481 using homeomorphic_ball01_UNIV homeomorphic_def by blast |
5482 then have "continuous_on (ball 0 1) (g \<circ> h)" |
5482 then have "continuous_on (ball 0 1) (g \<circ> h)" |
5483 by (meson contg continuous_on_compose continuous_on_subset homeomorphism_cont1 top_greatest) |
5483 by (meson contg continuous_on_compose continuous_on_subset homeomorphism_cont1 top_greatest) |
5484 then obtain j where contj: "continuous_on (ball 0 1) j" |
5484 then obtain j where contj: "continuous_on (ball 0 1) j" |
5485 and j: "\<And>z. z \<in> ball 0 1 \<Longrightarrow> exp(j z) = (g \<circ> h) z" |
5485 and j: "\<And>z. z \<in> ball 0 1 \<Longrightarrow> exp(j z) = (g \<circ> h) z" |
5486 by (metis (mono_tags, hide_lams) continuous_logarithm_on_ball comp_apply non0) |
5486 by (metis (mono_tags, opaque_lifting) continuous_logarithm_on_ball comp_apply non0) |
5487 have [simp]: "\<And>x. x \<in> S \<Longrightarrow> h (k x) = x" |
5487 have [simp]: "\<And>x. x \<in> S \<Longrightarrow> h (k x) = x" |
5488 using hk homeomorphism_apply2 by blast |
5488 using hk homeomorphism_apply2 by blast |
5489 have "\<exists>\<zeta>. continuous_on S \<zeta>\<and> (\<forall>x\<in>S. f x = exp (\<zeta> x))" |
5489 have "\<exists>\<zeta>. continuous_on S \<zeta>\<and> (\<forall>x\<in>S. f x = exp (\<zeta> x))" |
5490 proof (intro exI conjI ballI) |
5490 proof (intro exI conjI ballI) |
5491 show "continuous_on S (j \<circ> k)" |
5491 show "continuous_on S (j \<circ> k)" |