src/HOL/Analysis/Change_Of_Vars.thy
changeset 72569 d56e4eeae967
parent 72445 2c2de074832e
child 73536 5131c388a9b0
equal deleted inserted replaced
72568:bac8921e2901 72569:d56e4eeae967
   168             have [simp]: "\<bar>Max (range (\<lambda>k. \<bar>m k\<bar>))\<bar> = Max (range (\<lambda>k. \<bar>m k\<bar>))"
   168             have [simp]: "\<bar>Max (range (\<lambda>k. \<bar>m k\<bar>))\<bar> = Max (range (\<lambda>k. \<bar>m k\<bar>))"
   169               by (meson Max_ge abs_ge_zero abs_of_nonneg finite finite_imageI order_trans rangeI)
   169               by (meson Max_ge abs_ge_zero abs_of_nonneg finite finite_imageI order_trans rangeI)
   170             have "norm (\<chi> k. m k * x $ k) \<le> norm (Max (range (\<lambda>k. \<bar>m k\<bar>)) *\<^sub>R x)"
   170             have "norm (\<chi> k. m k * x $ k) \<le> norm (Max (range (\<lambda>k. \<bar>m k\<bar>)) *\<^sub>R x)"
   171               by (rule norm_le_componentwise_cart) (auto simp: abs_mult intro: mult_right_mono)
   171               by (rule norm_le_componentwise_cart) (auto simp: abs_mult intro: mult_right_mono)
   172             also have "\<dots> < ?C"
   172             also have "\<dots> < ?C"
   173               using x by simp (metis \<open>B > 0\<close> \<open>?C > 0\<close> mult.commute real_mult_less_iff1 zero_less_mult_pos)
   173               using x \<open>0 < (MAX k. \<bar>m k\<bar>) * B\<close> \<open>0 < B\<close> zero_less_mult_pos2 by fastforce
   174             finally have "norm (\<chi> k. m k * x $ k) < ?C" .
   174             finally have "norm (\<chi> k. m k * x $ k) < ?C" .
   175             then show "x \<in> (\<lambda>x. \<chi> k. x $ k / m k) ` ball 0 ?C"
   175             then show "x \<in> (\<lambda>x. \<chi> k. x $ k / m k) ` ball 0 ?C"
   176               using stretch_Galois [of "inverse \<circ> m"] True by (auto simp: image_iff field_simps)
   176               using stretch_Galois [of "inverse \<circ> m"] True by (auto simp: image_iff field_simps)
   177           qed
   177           qed
   178           then have Bsub: "ball 0 B \<subseteq> cbox (\<chi> k. min (?\<alpha> k) (?\<beta> k)) (\<chi> k. max (?\<alpha> k) (?\<beta> k))"
   178           then have Bsub: "ball 0 B \<subseteq> cbox (\<chi> k. min (?\<alpha> k) (?\<beta> k)) (\<chi> k. max (?\<alpha> k) (?\<beta> k))"
   762           unfolding T_def
   762           unfolding T_def
   763           proof (clarsimp simp add: Collect_conj_eq [symmetric])
   763           proof (clarsimp simp add: Collect_conj_eq [symmetric])
   764             fix x
   764             fix x
   765             assume "e > 0"  "m < n"  "n * e \<le> \<bar>det (matrix (f' x))\<bar>"  "\<bar>det (matrix (f' x))\<bar> < (1 + real m) * e"
   765             assume "e > 0"  "m < n"  "n * e \<le> \<bar>det (matrix (f' x))\<bar>"  "\<bar>det (matrix (f' x))\<bar> < (1 + real m) * e"
   766             then have "n < 1 + real m"
   766             then have "n < 1 + real m"
   767               by (metis (no_types, hide_lams) less_le_trans mult.commute not_le real_mult_le_cancel_iff2)
   767               by (metis (no_types, hide_lams) less_le_trans mult.commute not_le mult_le_cancel_iff2)
   768             then show "False"
   768             then show "False"
   769               using less.hyps by linarith
   769               using less.hyps by linarith
   770           qed
   770           qed
   771       qed auto
   771       qed auto
   772     qed
   772     qed
   778       proof (induction m n rule: linorder_less_wlog)
   778       proof (induction m n rule: linorder_less_wlog)
   779         case (less m n)
   779         case (less m n)
   780         have False if "T n \<subseteq> T m" "x \<in> T n" for x
   780         have False if "T n \<subseteq> T m" "x \<in> T n" for x
   781           using \<open>e > 0\<close> \<open>m < n\<close> that
   781           using \<open>e > 0\<close> \<open>m < n\<close> that
   782           apply (auto simp: T_def  mult.commute intro: less_le_trans dest!: subsetD)
   782           apply (auto simp: T_def  mult.commute intro: less_le_trans dest!: subsetD)
   783           by (metis add.commute less_le_trans nat_less_real_le not_le real_mult_le_cancel_iff2)
   783           by (metis add.commute less_le_trans nat_less_real_le not_le mult_le_cancel_iff2)
   784         then show ?case
   784         then show ?case
   785           using less.prems by blast
   785           using less.prems by blast
   786       qed auto
   786       qed auto
   787     qed
   787     qed
   788     have sum_eq_Tim: "(\<Sum>k\<le>n. f (T k)) = sum f (T ` {..n})" if "f {} = 0" for f :: "_ \<Rightarrow> real" and n
   788     have sum_eq_Tim: "(\<Sum>k\<le>n. f (T k)) = sum f (T ` {..n})" if "f {} = 0" for f :: "_ \<Rightarrow> real" and n
  2159               using \<open>B > 0\<close> by (auto intro: mult_mono [OF \<open>d \<le> B\<close> yx_le])
  2159               using \<open>B > 0\<close> by (auto intro: mult_mono [OF \<open>d \<le> B\<close> yx_le])
  2160           qed
  2160           qed
  2161           show "\<exists>t. norm (f y - f x - f' x t) \<le> d * norm (v - u)"
  2161           show "\<exists>t. norm (f y - f x - f' x t) \<le> d * norm (v - u)"
  2162             apply (rule_tac x="y-x" in exI)
  2162             apply (rule_tac x="y-x" in exI)
  2163             using \<open>d > 0\<close> yx_le le_dyx mult_left_mono [where c=d]
  2163             using \<open>d > 0\<close> yx_le le_dyx mult_left_mono [where c=d]
  2164             by (meson order_trans real_mult_le_cancel_iff2)
  2164             by (meson order_trans mult_le_cancel_iff2)
  2165         qed
  2165         qed
  2166         with subT show "f ` (K \<inter> S) \<subseteq> T" by blast
  2166         with subT show "f ` (K \<inter> S) \<subseteq> T" by blast
  2167         show "?\<mu> T \<le> e / (2*c) ^ ?m * ?\<mu> K"
  2167         show "?\<mu> T \<le> e / (2*c) ^ ?m * ?\<mu> K"
  2168         proof (rule order_trans [OF measT])
  2168         proof (rule order_trans [OF measT])
  2169           have "?DVU = (d * 2 * (4 * B) ^ (?n - 1)) * norm (v - u)^?n"
  2169           have "?DVU = (d * 2 * (4 * B) ^ (?n - 1)) * norm (v - u)^?n"