src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy
changeset 57512 cc97b347b301
parent 57447 87429bdecad5
child 57865 dcfb33c26f50
equal deleted inserted replaced
57511:de51a86fc903 57512:cc97b347b301
  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