79 |
79 |
80 lemma continuous_map_Euclidean_space_add [continuous_intros]: |
80 lemma continuous_map_Euclidean_space_add [continuous_intros]: |
81 "\<lbrakk>continuous_map X (Euclidean_space n) f; continuous_map X (Euclidean_space n) g\<rbrakk> |
81 "\<lbrakk>continuous_map X (Euclidean_space n) f; continuous_map X (Euclidean_space n) g\<rbrakk> |
82 \<Longrightarrow> continuous_map X (Euclidean_space n) (\<lambda>x i. f x i + g x i)" |
82 \<Longrightarrow> continuous_map X (Euclidean_space n) (\<lambda>x i. f x i + g x i)" |
83 unfolding Euclidean_space_def continuous_map_in_subtopology |
83 unfolding Euclidean_space_def continuous_map_in_subtopology |
84 by (fastforce simp add: continuous_map_componentwise_UNIV continuous_map_real_add) |
84 by (fastforce simp add: continuous_map_componentwise_UNIV continuous_map_add) |
85 |
85 |
86 lemma continuous_map_Euclidean_space_diff [continuous_intros]: |
86 lemma continuous_map_Euclidean_space_diff [continuous_intros]: |
87 "\<lbrakk>continuous_map X (Euclidean_space n) f; continuous_map X (Euclidean_space n) g\<rbrakk> |
87 "\<lbrakk>continuous_map X (Euclidean_space n) f; continuous_map X (Euclidean_space n) g\<rbrakk> |
88 \<Longrightarrow> continuous_map X (Euclidean_space n) (\<lambda>x i. f x i - g x i)" |
88 \<Longrightarrow> continuous_map X (Euclidean_space n) (\<lambda>x i. f x i - g x i)" |
89 unfolding Euclidean_space_def continuous_map_in_subtopology |
89 unfolding Euclidean_space_def continuous_map_in_subtopology |
90 by (fastforce simp add: continuous_map_componentwise_UNIV continuous_map_real_diff) |
90 by (fastforce simp add: continuous_map_componentwise_UNIV continuous_map_diff) |
91 |
91 |
92 lemma homeomorphic_Euclidean_space_product_topology: |
92 lemma homeomorphic_Euclidean_space_product_topology: |
93 "Euclidean_space n homeomorphic_space product_topology (\<lambda>i. euclideanreal) {..<n}" |
93 "Euclidean_space n homeomorphic_space product_topology (\<lambda>i. euclideanreal) {..<n}" |
94 proof - |
94 proof - |
95 have cm: "continuous_map (product_topology (\<lambda>i. euclideanreal) {..<n}) |
95 have cm: "continuous_map (product_topology (\<lambda>i. euclideanreal) {..<n}) |
156 qed |
156 qed |
157 |
157 |
158 lemma continuous_map_nsphere_reflection: |
158 lemma continuous_map_nsphere_reflection: |
159 "continuous_map (nsphere n) (nsphere n) (\<lambda>x i. if i = k then -x i else x i)" |
159 "continuous_map (nsphere n) (nsphere n) (\<lambda>x i. if i = k then -x i else x i)" |
160 proof - |
160 proof - |
161 have cm: "continuous_map (powertop_real UNIV) |
161 have cm: "continuous_map (powertop_real UNIV) euclideanreal (\<lambda>x. if j = k then - x j else x j)" for j |
162 euclideanreal (\<lambda>x. if j = k then - x j else x j)" for j |
|
163 proof (cases "j=k") |
162 proof (cases "j=k") |
164 case True |
163 case True |
165 then show ?thesis |
164 then show ?thesis |
166 by simp (metis UNIV_I continuous_map_product_projection continuous_map_real_minus) |
165 by simp (metis UNIV_I continuous_map_product_projection) |
167 next |
166 next |
168 case False |
167 case False |
169 then show ?thesis |
168 then show ?thesis |
170 by (auto intro: continuous_map_product_projection) |
169 by (auto intro: continuous_map_product_projection) |
171 qed |
170 qed |
172 have eq: "(if i = k then x k * x k else x i * x i) = x i * x i" for i and x :: "nat \<Rightarrow> real" |
171 have eq: "(if i = k then x k * x k else x i * x i) = x i * x i" for i and x :: "nat \<Rightarrow> real" |
173 by simp |
172 by simp |
174 show ?thesis |
173 show ?thesis |
175 apply (simp add: nsphere continuous_map_in_subtopology continuous_map_componentwise_UNIV |
174 apply (simp add: nsphere continuous_map_in_subtopology continuous_map_componentwise_UNIV |
176 continuous_map_from_subtopology cm topspace_subtopology) |
175 continuous_map_from_subtopology cm) |
177 apply (intro conjI allI impI continuous_intros continuous_map_from_subtopology continuous_map_product_projection) |
176 apply (intro conjI allI impI continuous_intros continuous_map_from_subtopology continuous_map_product_projection) |
178 apply (auto simp: power2_eq_square if_distrib [where f = "\<lambda>x. x * _"] eq cong: if_cong) |
177 apply (auto simp: power2_eq_square if_distrib [where f = "\<lambda>x. x * _"] eq cong: if_cong) |
179 done |
178 done |
180 qed |
179 qed |
181 |
180 |