equal
deleted
inserted
replaced
3281 done |
3281 done |
3282 also have "\<dots> = abs (1/e) * norm (x - e *\<^sub>R (x - c) - y)" |
3282 also have "\<dots> = abs (1/e) * norm (x - e *\<^sub>R (x - c) - y)" |
3283 by (auto intro!:arg_cong[where f=norm] simp add: algebra_simps) |
3283 by (auto intro!:arg_cong[where f=norm] simp add: algebra_simps) |
3284 also have "\<dots> < d" |
3284 also have "\<dots> < d" |
3285 using as[unfolded dist_norm] and `e > 0` |
3285 using as[unfolded dist_norm] and `e > 0` |
3286 by (auto simp add:pos_divide_less_eq[OF `e > 0`] mult_commute) |
3286 by (auto simp add:pos_divide_less_eq[OF `e > 0`] mult.commute) |
3287 finally have "y \<in> S" |
3287 finally have "y \<in> S" |
3288 apply (subst *) |
3288 apply (subst *) |
3289 apply (rule assms(1)[unfolded convex_alt,rule_format]) |
3289 apply (rule assms(1)[unfolded convex_alt,rule_format]) |
3290 apply (rule d[unfolded subset_eq,rule_format]) |
3290 apply (rule d[unfolded subset_eq,rule_format]) |
3291 unfolding mem_ball |
3291 unfolding mem_ball |
5921 have "x \<bullet> i \<le> d + y \<bullet> i" "y \<bullet> i \<le> d + x \<bullet> i" |
5921 have "x \<bullet> i \<le> d + y \<bullet> i" "y \<bullet> i \<le> d + x \<bullet> i" |
5922 using as[unfolded mem_box, THEN bspec[where x=i]] i |
5922 using as[unfolded mem_box, THEN bspec[where x=i]] i |
5923 by (auto simp: inner_simps) |
5923 by (auto simp: inner_simps) |
5924 then have "1 \<ge> inverse d * (x \<bullet> i - y \<bullet> i)" "1 \<ge> inverse d * (y \<bullet> i - x \<bullet> i)" |
5924 then have "1 \<ge> inverse d * (x \<bullet> i - y \<bullet> i)" "1 \<ge> inverse d * (y \<bullet> i - x \<bullet> i)" |
5925 apply (rule_tac[!] mult_left_le_imp_le[OF _ assms]) |
5925 apply (rule_tac[!] mult_left_le_imp_le[OF _ assms]) |
5926 unfolding mult_assoc[symmetric] |
5926 unfolding mult.assoc[symmetric] |
5927 using assms |
5927 using assms |
5928 by (auto simp add: field_simps) |
5928 by (auto simp add: field_simps) |
5929 then have "inverse d * (x \<bullet> i * 2) \<le> 2 + inverse d * (y \<bullet> i * 2)" |
5929 then have "inverse d * (x \<bullet> i * 2) \<le> 2 + inverse d * (y \<bullet> i * 2)" |
5930 "inverse d * (y \<bullet> i * 2) \<le> 2 + inverse d * (x \<bullet> i * 2)" |
5930 "inverse d * (y \<bullet> i * 2) \<le> 2 + inverse d * (x \<bullet> i * 2)" |
5931 using `0<d` by (auto simp add: field_simps) } |
5931 using `0<d` by (auto simp add: field_simps) } |
6491 by (auto simp add: euclidean_eq_iff[where 'a='a] field_simps inner_simps) |
6491 by (auto simp add: euclidean_eq_iff[where 'a='a] field_simps inner_simps) |
6492 also have "\<dots> = abs (1/e) * norm (x - e *\<^sub>R (x - c) - y)" |
6492 also have "\<dots> = abs (1/e) * norm (x - e *\<^sub>R (x - c) - y)" |
6493 by (auto intro!:arg_cong[where f=norm] simp add: algebra_simps) |
6493 by (auto intro!:arg_cong[where f=norm] simp add: algebra_simps) |
6494 also have "\<dots> < d" |
6494 also have "\<dots> < d" |
6495 using as[unfolded dist_norm] and `e > 0` |
6495 using as[unfolded dist_norm] and `e > 0` |
6496 by (auto simp add:pos_divide_less_eq[OF `e > 0`] mult_commute) |
6496 by (auto simp add:pos_divide_less_eq[OF `e > 0`] mult.commute) |
6497 finally show "y \<in> s" |
6497 finally show "y \<in> s" |
6498 apply (subst *) |
6498 apply (subst *) |
6499 apply (rule assms(1)[unfolded convex_alt,rule_format]) |
6499 apply (rule assms(1)[unfolded convex_alt,rule_format]) |
6500 apply (rule d[unfolded subset_eq,rule_format]) |
6500 apply (rule d[unfolded subset_eq,rule_format]) |
6501 unfolding mem_ball |
6501 unfolding mem_ball |