src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy
changeset 58776 95e58e04e534
parent 57865 dcfb33c26f50
child 58877 262572d90bc6
equal deleted inserted replaced
58775:9cd64a66a765 58776:95e58e04e534
  5913     defer
  5913     defer
  5914     apply (erule bexE)
  5914     apply (erule bexE)
  5915   proof -
  5915   proof -
  5916     fix y
  5916     fix y
  5917     assume as: "y\<in>cbox (x - ?d) (x + ?d)"
  5917     assume as: "y\<in>cbox (x - ?d) (x + ?d)"
  5918     {
       
  5919       fix i :: 'a
       
  5920       assume i: "i \<in> Basis"
       
  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
       
  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)"
       
  5925         apply (rule_tac[!] mult_left_le_imp_le[OF _ assms])
       
  5926         unfolding mult.assoc[symmetric]
       
  5927         using assms
       
  5928         by (auto simp add: field_simps)
       
  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)"
       
  5931         using `0<d` by (auto simp add: field_simps) }
       
  5932     then have "inverse (2 * d) *\<^sub>R (y - (x - ?d)) \<in> cbox 0 (\<Sum>Basis)"
  5918     then have "inverse (2 * d) *\<^sub>R (y - (x - ?d)) \<in> cbox 0 (\<Sum>Basis)"
  5933       unfolding mem_box using assms
  5919       using assms by (simp add: mem_box field_simps inner_simps)
  5934       by (auto simp add: field_simps inner_simps simp del: inverse_eq_divide)
  5920     with `0 < d` show "\<exists>z\<in>cbox 0 (\<Sum>Basis). y = x - ?d + (2 * d) *\<^sub>R z"
  5935     then show "\<exists>z\<in>cbox 0 (\<Sum>Basis). y = x - ?d + (2 * d) *\<^sub>R z"
  5921       by (intro bexI[of _ "inverse (2 * d) *\<^sub>R (y - (x - ?d))"]) auto
  5936       apply -
       
  5937       apply (rule_tac x="inverse (2 * d) *\<^sub>R (y - (x - ?d))" in bexI)
       
  5938       using assms
       
  5939       apply auto
       
  5940       done
       
  5941   next
  5922   next
  5942     fix y z
  5923     fix y z
  5943     assume as: "z\<in>cbox 0 (\<Sum>Basis)" "y = x - ?d + (2*d) *\<^sub>R z"
  5924     assume as: "z\<in>cbox 0 (\<Sum>Basis)" "y = x - ?d + (2*d) *\<^sub>R z"
  5944     have "\<And>i. i\<in>Basis \<Longrightarrow> 0 \<le> d * (z \<bullet> i) \<and> d * (z \<bullet> i) \<le> d"
  5925     have "\<And>i. i\<in>Basis \<Longrightarrow> 0 \<le> d * (z \<bullet> i) \<and> d * (z \<bullet> i) \<le> d"
  5945       using assms as(1)[unfolded mem_box]
  5926       using assms as(1)[unfolded mem_box]
  6074         have "f x \<le> 1 / (1 + t) * f w + (t / (1 + t)) * f y"
  6055         have "f x \<le> 1 / (1 + t) * f w + (t / (1 + t)) * f y"
  6075           using assms(2)[unfolded convex_on_def,rule_format,of w y "1/(1+t)" "t / (1+t)",unfolded w]
  6056           using assms(2)[unfolded convex_on_def,rule_format,of w y "1/(1+t)" "t / (1+t)",unfolded w]
  6076           using `0 < t` `2 < t` and `y \<in> s` `w \<in> s`
  6057           using `0 < t` `2 < t` and `y \<in> s` `w \<in> s`
  6077           by (auto simp add:field_simps)
  6058           by (auto simp add:field_simps)
  6078         also have "\<dots> = (f w + t * f y) / (1 + t)"
  6059         also have "\<dots> = (f w + t * f y) / (1 + t)"
  6079           using `t > 0` unfolding divide_inverse by (auto simp add: field_simps)
  6060           using `t > 0` by (auto simp add: divide_simps)
  6080         also have "\<dots> < e + f y"
  6061         also have "\<dots> < e + f y"
  6081           using `t > 0` * `e > 0` by (auto simp add: field_simps)
  6062           using `t > 0` * `e > 0` by (auto simp add: field_simps)
  6082         finally have "f x - f y < e" by auto
  6063         finally have "f x - f y < e" by auto
  6083       }
  6064       }
  6084       ultimately show ?thesis by auto
  6065       ultimately show ?thesis by auto