diff -r 697450fd25c1 -r 571ae57313a4 src/HOL/Decision_Procs/Approximation_Bounds.thy --- a/src/HOL/Decision_Procs/Approximation_Bounds.thy Fri Jun 14 08:34:28 2019 +0000 +++ b/src/HOL/Decision_Procs/Approximation_Bounds.thy Fri Jun 14 08:34:28 2019 +0000 @@ -2540,16 +2540,16 @@ have "0 < m" and "m \ 0" using \0 < x\ Float powr_gt_zero[of 2 e] by (auto simp add: zero_less_mult_iff) define bl where "bl = bitlen m - 1" + then have bitlen: "bitlen m = bl + 1" + by simp hence "bl \ 0" - using \m > 0\ by (simp add: bitlen_alt_def) + using \m > 0\ by (auto simp add: bitlen_alt_def) have "1 \ Float m e" using \1 \ x\ Float unfolding less_eq_float_def by auto from bitlen_div[OF \0 < m\] float_gt1_scale[OF \1 \ Float m e\] \bl \ 0\ have x_bnds: "0 \ real_of_float (?x - 1)" "real_of_float (?x - 1) < 1" - unfolding bl_def[symmetric] - by (auto simp: powr_realpow[symmetric] field_simps) - (auto simp : powr_minus field_simps) - + using abs_real_le_2_powr_bitlen [of m] \m > 0\ + by (simp_all add: bitlen powr_realpow [symmetric] powr_minus powr_add field_simps) { have "float_round_down prec (lb_ln2 prec * ?s) \ ln 2 * (e + (bitlen m - 1))" (is "real_of_float ?lb2 \ _")