833 then have inj: "inj (\<lambda>x::'a. x /\<^sub>R norm (a - b))" |
833 then have inj: "inj (\<lambda>x::'a. x /\<^sub>R norm (a - b))" |
834 by (simp add: inj_on_def) |
834 by (simp add: inj_on_def) |
835 have "((sphere a r \<inter> T) - {b}) homeomorphic |
835 have "((sphere a r \<inter> T) - {b}) homeomorphic |
836 (+) (-a) ` ((sphere a r \<inter> T) - {b})" |
836 (+) (-a) ` ((sphere a r \<inter> T) - {b})" |
837 by (rule homeomorphic_translation) |
837 by (rule homeomorphic_translation) |
838 also have "... homeomorphic ( *\<^sub>R) (inverse r) ` (+) (- a) ` (sphere a r \<inter> T - {b})" |
838 also have "... homeomorphic (*\<^sub>R) (inverse r) ` (+) (- a) ` (sphere a r \<inter> T - {b})" |
839 by (metis \<open>0 < r\<close> homeomorphic_scaling inverse_inverse_eq inverse_zero less_irrefl) |
839 by (metis \<open>0 < r\<close> homeomorphic_scaling inverse_inverse_eq inverse_zero less_irrefl) |
840 also have "... = sphere 0 1 \<inter> (( *\<^sub>R) (inverse r) ` (+) (- a) ` T) - {(b - a) /\<^sub>R r}" |
840 also have "... = sphere 0 1 \<inter> ((*\<^sub>R) (inverse r) ` (+) (- a) ` T) - {(b - a) /\<^sub>R r}" |
841 using assms by (auto simp: dist_norm norm_minus_commute divide_simps) |
841 using assms by (auto simp: dist_norm norm_minus_commute divide_simps) |
842 also have "... homeomorphic p" |
842 also have "... homeomorphic p" |
843 apply (rule homeomorphic_punctured_affine_sphere_affine_01) |
843 apply (rule homeomorphic_punctured_affine_sphere_affine_01) |
844 using assms |
844 using assms |
845 apply (auto simp: dist_norm norm_minus_commute affine_scaling affine_translation [symmetric] aff_dim_translation_eq inj) |
845 apply (auto simp: dist_norm norm_minus_commute affine_scaling affine_translation [symmetric] aff_dim_translation_eq inj) |
2208 obtain q' where "path q'" "path_image q' \<subseteq> C" |
2208 obtain q' where "path q'" "path_image q' \<subseteq> C" |
2209 and "pathstart q' = pathstart q" "pathfinish q' = pathfinish q" |
2209 and "pathstart q' = pathstart q" "pathfinish q' = pathfinish q" |
2210 and pq'_eq: "\<And>t. t \<in> {0..1} \<Longrightarrow> p (q' t) = (f \<circ> g +++ reversepath g') t" |
2210 and pq'_eq: "\<And>t. t \<in> {0..1} \<Longrightarrow> p (q' t) = (f \<circ> g +++ reversepath g') t" |
2211 using covering_space_lift_homotopic_path [OF cov homotopic_paths_sym [OF homS] \<open>path q\<close> piq refl refl] |
2211 using covering_space_lift_homotopic_path [OF cov homotopic_paths_sym [OF homS] \<open>path q\<close> piq refl refl] |
2212 by auto |
2212 by auto |
2213 have "q' t = (h \<circ> ( *\<^sub>R) 2) t" if "0 \<le> t" "t \<le> 1/2" for t |
2213 have "q' t = (h \<circ> (*\<^sub>R) 2) t" if "0 \<le> t" "t \<le> 1/2" for t |
2214 proof (rule covering_space_lift_unique [OF cov, of q' 0 "h \<circ> ( *\<^sub>R) 2" "{0..1/2}" "f \<circ> g \<circ> ( *\<^sub>R) 2" t]) |
2214 proof (rule covering_space_lift_unique [OF cov, of q' 0 "h \<circ> (*\<^sub>R) 2" "{0..1/2}" "f \<circ> g \<circ> (*\<^sub>R) 2" t]) |
2215 show "q' 0 = (h \<circ> ( *\<^sub>R) 2) 0" |
2215 show "q' 0 = (h \<circ> (*\<^sub>R) 2) 0" |
2216 by (metis \<open>pathstart q' = pathstart q\<close> comp_def g h pastq pathstart_def pth_4(2)) |
2216 by (metis \<open>pathstart q' = pathstart q\<close> comp_def g h pastq pathstart_def pth_4(2)) |
2217 show "continuous_on {0..1/2} (f \<circ> g \<circ> ( *\<^sub>R) 2)" |
2217 show "continuous_on {0..1/2} (f \<circ> g \<circ> (*\<^sub>R) 2)" |
2218 apply (intro continuous_intros continuous_on_compose continuous_on_path [OF \<open>path g\<close>] continuous_on_subset [OF contf]) |
2218 apply (intro continuous_intros continuous_on_compose continuous_on_path [OF \<open>path g\<close>] continuous_on_subset [OF contf]) |
2219 using g(2) path_image_def by fastforce+ |
2219 using g(2) path_image_def by fastforce+ |
2220 show "(f \<circ> g \<circ> ( *\<^sub>R) 2) ` {0..1/2} \<subseteq> S" |
2220 show "(f \<circ> g \<circ> (*\<^sub>R) 2) ` {0..1/2} \<subseteq> S" |
2221 using g(2) path_image_def fim by fastforce |
2221 using g(2) path_image_def fim by fastforce |
2222 show "(h \<circ> ( *\<^sub>R) 2) ` {0..1/2} \<subseteq> C" |
2222 show "(h \<circ> (*\<^sub>R) 2) ` {0..1/2} \<subseteq> C" |
2223 using h path_image_def by fastforce |
2223 using h path_image_def by fastforce |
2224 show "q' ` {0..1/2} \<subseteq> C" |
2224 show "q' ` {0..1/2} \<subseteq> C" |
2225 using \<open>path_image q' \<subseteq> C\<close> path_image_def by fastforce |
2225 using \<open>path_image q' \<subseteq> C\<close> path_image_def by fastforce |
2226 show "\<And>x. x \<in> {0..1/2} \<Longrightarrow> (f \<circ> g \<circ> ( *\<^sub>R) 2) x = p (q' x)" |
2226 show "\<And>x. x \<in> {0..1/2} \<Longrightarrow> (f \<circ> g \<circ> (*\<^sub>R) 2) x = p (q' x)" |
2227 by (auto simp: joinpaths_def pq'_eq) |
2227 by (auto simp: joinpaths_def pq'_eq) |
2228 show "\<And>x. x \<in> {0..1/2} \<Longrightarrow> (f \<circ> g \<circ> ( *\<^sub>R) 2) x = p ((h \<circ> ( *\<^sub>R) 2) x)" |
2228 show "\<And>x. x \<in> {0..1/2} \<Longrightarrow> (f \<circ> g \<circ> (*\<^sub>R) 2) x = p ((h \<circ> (*\<^sub>R) 2) x)" |
2229 by (simp add: phg) |
2229 by (simp add: phg) |
2230 show "continuous_on {0..1/2} q'" |
2230 show "continuous_on {0..1/2} q'" |
2231 by (simp add: continuous_on_path \<open>path q'\<close>) |
2231 by (simp add: continuous_on_path \<open>path q'\<close>) |
2232 show "continuous_on {0..1/2} (h \<circ> ( *\<^sub>R) 2)" |
2232 show "continuous_on {0..1/2} (h \<circ> (*\<^sub>R) 2)" |
2233 apply (intro continuous_intros continuous_on_compose continuous_on_path [OF \<open>path h\<close>], force) |
2233 apply (intro continuous_intros continuous_on_compose continuous_on_path [OF \<open>path h\<close>], force) |
2234 done |
2234 done |
2235 qed (use that in auto) |
2235 qed (use that in auto) |
2236 moreover have "q' t = (reversepath h' \<circ> (\<lambda>t. 2 *\<^sub>R t - 1)) t" if "1/2 < t" "t \<le> 1" for t |
2236 moreover have "q' t = (reversepath h' \<circ> (\<lambda>t. 2 *\<^sub>R t - 1)) t" if "1/2 < t" "t \<le> 1" for t |
2237 proof (rule covering_space_lift_unique [OF cov, of q' 1 "reversepath h' \<circ> (\<lambda>t. 2 *\<^sub>R t - 1)" "{1/2<..1}" "f \<circ> reversepath g' \<circ> (\<lambda>t. 2 *\<^sub>R t - 1)" t]) |
2237 proof (rule covering_space_lift_unique [OF cov, of q' 1 "reversepath h' \<circ> (\<lambda>t. 2 *\<^sub>R t - 1)" "{1/2<..1}" "f \<circ> reversepath g' \<circ> (\<lambda>t. 2 *\<^sub>R t - 1)" t]) |