# HG changeset patch # User paulson # Date 1722246557 -3600 # Node ID 424b90ba7b6ff24d6e7ef09011ff8e558a412a47 # Parent 0c4d17ef855d5dc7838e84368086cdbda5d28774 Further divide_mono fixes diff -r 0c4d17ef855d -r 424b90ba7b6f src/HOL/Analysis/Improper_Integral.thy --- a/src/HOL/Analysis/Improper_Integral.thy Mon Jul 29 10:24:54 2024 +0100 +++ b/src/HOL/Analysis/Improper_Integral.thy Mon Jul 29 10:49:17 2024 +0100 @@ -959,9 +959,8 @@ by (simp add: dist_norm norm_minus_commute) also have "... \ \ * (b \ i - a \ i) / \v \ i - u \ i\ / (4 * content (cbox a b))" proof (intro mult_right_mono divide_left_mono divide_right_mono uvi) - show "norm (v - u) * \v \ i - u \ i\ > 0" - using u_less_v [OF \i \ Basis\] - by (auto simp: less_eq_real_def zero_less_mult_iff that) + show "\v \ i - u \ i\ > 0" + using u_less_v [OF \i \ Basis\] by force show "\ * (b \ i - a \ i) \ 0" using a_less_b \0 < \\ \i \ Basis\ by force qed auto diff -r 0c4d17ef855d -r 424b90ba7b6f src/HOL/Decision_Procs/Approximation_Bounds.thy --- a/src/HOL/Decision_Procs/Approximation_Bounds.thy Mon Jul 29 10:24:54 2024 +0100 +++ b/src/HOL/Decision_Procs/Approximation_Bounds.thy Mon Jul 29 10:49:17 2024 +0100 @@ -956,13 +956,14 @@ using bnds_sqrt'[of ?sxx prec] by auto finally have "sqrt (1 + x*x) \ ub_sqrt prec ?sxx" . - hence "?R \ ?fR" by (auto simp: float_plus_up.rep_eq plus_up_def intro!: truncate_up_le) + hence \: "?R \ ?fR" by (auto simp: float_plus_up.rep_eq plus_up_def intro!: truncate_up_le) hence "0 < ?fR" and "0 < real_of_float ?fR" using \0 < ?R\ by auto have monotone: "?DIV \ x / ?R" proof - have "?DIV \ real_of_float x / ?fR" by (rule float_divl) - also have "\ \ x / ?R" by (rule divide_left_mono[OF \?R \ ?fR\ \0 \ real_of_float x\ mult_pos_pos[OF order_less_le_trans[OF divisor_gt0 \?R \ real_of_float ?fR\] divisor_gt0]]) + also have "\ \ x / ?R" + by (simp add: \ assms divide_left_mono divisor_gt0) finally show ?thesis . qed @@ -1081,16 +1082,16 @@ also have "\ \ sqrt (1 + x*x)" by (auto simp: float_plus_down.rep_eq plus_down_def float_round_down.rep_eq truncate_down_le) finally have "lb_sqrt prec ?sxx \ sqrt (1 + x*x)" . - hence "?fR \ ?R" + hence \: "?fR \ ?R" by (auto simp: float_plus_down.rep_eq plus_down_def truncate_down_le) + have monotone: "x / ?R \ (float_divr prec x ?fR)" + proof - have "0 < real_of_float ?fR" by (auto simp: float_plus_down.rep_eq plus_down_def float_round_down.rep_eq intro!: truncate_down_ge1 lb_sqrt_lower_bound order_less_le_trans[OF zero_less_one] truncate_down_nonneg add_nonneg_nonneg) - have monotone: "x / ?R \ (float_divr prec x ?fR)" - proof - - from divide_left_mono[OF \?fR \ ?R\ \0 \ real_of_float x\ mult_pos_pos[OF divisor_gt0 \0 < real_of_float ?fR\]] - have "x / ?R \ x / ?fR" . + then have "x / ?R \ x / ?fR" + using \ assms divide_left_mono by blast also have "\ \ ?DIV" by (rule float_divr) finally show ?thesis . qed