214 "inner x (y::'a) = (\<Sum>i<DIM('a::euclidean_space). (x $$ i) * (y $$ i))" |
214 "inner x (y::'a) = (\<Sum>i<DIM('a::euclidean_space). (x $$ i) * (y $$ i))" |
215 by (subst (1 2) euclidean_representation, |
215 by (subst (1 2) euclidean_representation, |
216 simp add: inner_setsum_left inner_setsum_right |
216 simp add: inner_setsum_left inner_setsum_right |
217 dot_basis if_distrib setsum_cases mult_commute) |
217 dot_basis if_distrib setsum_cases mult_commute) |
218 |
218 |
|
219 lemma euclidean_dist_l2: |
|
220 fixes x y :: "'a::euclidean_space" |
|
221 shows "dist x y = setL2 (\<lambda>i. dist (x $$ i) (y $$ i)) {..<DIM('a)}" |
|
222 unfolding dist_norm norm_eq_sqrt_inner setL2_def |
|
223 by (simp add: euclidean_inner power2_eq_square) |
|
224 |
219 lemma component_le_norm: "\<bar>x$$i\<bar> \<le> norm (x::'a::euclidean_space)" |
225 lemma component_le_norm: "\<bar>x$$i\<bar> \<le> norm (x::'a::euclidean_space)" |
220 unfolding euclidean_component_def |
226 unfolding euclidean_component_def |
221 by (rule order_trans [OF Cauchy_Schwarz_ineq2]) simp |
227 by (rule order_trans [OF Cauchy_Schwarz_ineq2]) simp |
|
228 |
|
229 lemma dist_nth_le: "dist (x $$ i) (y $$ i) \<le> dist x (y::'a::euclidean_space)" |
|
230 unfolding euclidean_dist_l2 [where 'a='a] |
|
231 by (cases "i < DIM('a)", rule member_le_setL2, auto) |
222 |
232 |
223 subsection {* Subclass relationships *} |
233 subsection {* Subclass relationships *} |
224 |
234 |
225 instance euclidean_space \<subseteq> perfect_space |
235 instance euclidean_space \<subseteq> perfect_space |
226 proof |
236 proof |