equal
deleted
inserted
replaced
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" |