# HG changeset patch # User paulson # Date 1722266525 -3600 # Node ID 15a81ed33d2adc24479e7dc66310e714ee7823fa # Parent 424b90ba7b6ff24d6e7ef09011ff8e558a412a47 Reversed my brain-dead stupid change to divide_left_mono and divide_left_mono_neg diff -r 424b90ba7b6f -r 15a81ed33d2a src/HOL/Analysis/Improper_Integral.thy --- a/src/HOL/Analysis/Improper_Integral.thy Mon Jul 29 10:49:17 2024 +0100 +++ b/src/HOL/Analysis/Improper_Integral.thy Mon Jul 29 16:22:05 2024 +0100 @@ -959,8 +959,9 @@ 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 "\v \ i - u \ i\ > 0" - using u_less_v [OF \i \ Basis\] by force + 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 "\ * (b \ i - a \ i) \ 0" using a_less_b \0 < \\ \i \ Basis\ by force qed auto diff -r 424b90ba7b6f -r 15a81ed33d2a src/HOL/Decision_Procs/Approximation_Bounds.thy --- a/src/HOL/Decision_Procs/Approximation_Bounds.thy Mon Jul 29 10:49:17 2024 +0100 +++ b/src/HOL/Decision_Procs/Approximation_Bounds.thy Mon Jul 29 16:22:05 2024 +0100 @@ -956,14 +956,13 @@ 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 (simp add: \ assms divide_left_mono divisor_gt0) + 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]]) finally show ?thesis . qed @@ -1082,16 +1081,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) - then have "x / ?R \ x / ?fR" - using \ assms divide_left_mono by blast + 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" . also have "\ \ ?DIV" by (rule float_divr) finally show ?thesis . qed diff -r 424b90ba7b6f -r 15a81ed33d2a src/HOL/Fields.thy --- a/src/HOL/Fields.thy Mon Jul 29 10:49:17 2024 +0100 +++ b/src/HOL/Fields.thy Mon Jul 29 16:22:05 2024 +0100 @@ -949,7 +949,7 @@ by (auto simp: field_simps zero_less_mult_iff mult_strict_right_mono) lemma divide_left_mono: - "\b \ a; 0 \ c; 0 < b\ \ c / a \ c / b" + "\b \ a; 0 \ c; 0 < a*b\ \ c / a \ c / b" by (auto simp: field_simps zero_less_mult_iff mult_right_mono) lemma divide_strict_left_mono_neg: @@ -1156,7 +1156,7 @@ lemma divide_right_mono_neg: "a \ b \ c \ 0 \ b / c \ a / c" by (auto dest: divide_right_mono [of _ _ "- c"]) -lemma divide_left_mono_neg: "a \ b \ c \ 0 \ 0 < a \ c / a \ c / b" +lemma divide_left_mono_neg: "a \ b \ c \ 0 \ 0 < a * b \ c / a \ c / b" by (auto simp add: mult.commute dest: divide_left_mono [of _ _ "- c"]) lemma inverse_le_iff: "inverse a \ inverse b \ (0 < a * b \ b \ a) \ (a * b \ 0 \ a \ b)"