Theorem: Real.log_two_near_10
File: Mathlib/Data/Complex/ExponentialBounds.lean

tactic: suffices |log 2 - 287209 / 414355| ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34) by
  norm_num1 at *
  assumption
state_before: ⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 10 ^ 10

tactic: have t : |(2⁻¹ : ℝ)| = 2⁻¹ := by rw [abs_of_pos]; norm_num
state_before: ⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)

tactic: have z := Real.abs_log_sub_add_sum_range_le (show |(2⁻¹ : ℝ)| < 1 by rw [t]; norm_num) 34
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)

tactic: rw [t] at z
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z :
  Abs.abs ((Finset.sum (range 34) fun i => 2⁻¹ ^ (i + 1) / (↑i + 1)) + log (1 - 2⁻¹)) ≤
    Abs.abs 2⁻¹ ^ (34 + 1) / (1 - Abs.abs 2⁻¹)
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)

tactic: norm_num1 at z
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z : Abs.abs ((Finset.sum (range 34) fun i => 2⁻¹ ^ (i + 1) / (↑i + 1)) + log (1 - 2⁻¹)) ≤ 2⁻¹ ^ (34 + 1) / (1 - 2⁻¹)
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)

tactic: rw [one_div (2 : ℝ), log_inv, ← sub_eq_add_neg, _root_.abs_sub_comm] at z
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z : Abs.abs ((Finset.sum (range 34) fun x => (1 / 2) ^ (x + 1) / (↑x + 1)) + log (1 / 2)) ≤ 1 / 17179869184
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)

tactic: apply le_trans (_root_.abs_sub_le _ _ _) (add_le_add z _)
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z : Abs.abs (log 2 - Finset.sum (range 34) fun x => 2⁻¹ ^ (x + 1) / (↑x + 1)) ≤ 1 / 17179869184
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)

tactic: simp_rw [sum_range_succ]
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z : Abs.abs (log 2 - Finset.sum (range 34) fun x => 2⁻¹ ^ (x + 1) / (↑x + 1)) ≤ 1 / 17179869184
⊢ Abs.abs ((Finset.sum (range 34) fun x => 2⁻¹ ^ (x + 1) / (↑x + 1)) - 287209 / 414355) ≤ 1 / 10 ^ 10 - 1 / 2 ^ 34

tactic: norm_num
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z : Abs.abs (log 2 - Finset.sum (range 34) fun x => 2⁻¹ ^ (x + 1) / (↑x + 1)) ≤ 1 / 17179869184
⊢ Abs.abs
      ((Finset.sum (range 0) fun x => 2⁻¹ ^ (x + 1) / (↑x + 1)) + 2⁻¹ ^ (0 + 1) / (↑0 + 1) + 2⁻¹ ^ (1 + 1) / (↑1 + 1) +
                                                                        2⁻¹ ^ (2 + 1) / (↑2 + 1) +
                                                                      2⁻¹ ^ (3 + 1) / (↑3 + 1) +
                                                                    2⁻¹ ^ (4 + 1) / (↑4 + 1) +
                                                                  2⁻¹ ^ (5 + 1) / (↑5 + 1) +
                                                                2⁻¹ ^ (6 + 1) / (↑6 + 1) +
                                                              2⁻¹ ^ (7 + 1) / (↑7 + 1) +
                                                            2⁻¹ ^ (8 + 1) / (↑8 + 1) +
                                                          2⁻¹ ^ (9 + 1) / (↑9 + 1) +
                                                        2⁻¹ ^ (10 + 1) / (↑10 + 1) +
                                                      2⁻¹ ^ (11 + 1) / (↑11 + 1) +
                                                    2⁻¹ ^ (12 + 1) / (↑12 + 1) +
                                                  2⁻¹ ^ (13 + 1) / (↑13 + 1) +
                                                2⁻¹ ^ (14 + 1) / (↑14 + 1) +
                                              2⁻¹ ^ (15 + 1) / (↑15 + 1) +
                                            2⁻¹ ^ (16 + 1) / (↑16 + 1) +
                                          2⁻¹ ^ (17 + 1) / (↑17 + 1) +
                                        2⁻¹ ^ (18 + 1) / (↑18 + 1) +
                                      2⁻¹ ^ (19 + 1) / (↑19 + 1) +
                                    2⁻¹ ^ (20 + 1) / (↑20 + 1) +
                                  2⁻¹ ^ (21 + 1) / (↑21 + 1) +
                                2⁻¹ ^ (22 + 1) / (↑22 + 1) +
                              2⁻¹ ^ (23 + 1) / (↑23 + 1) +
                            2⁻¹ ^ (24 + 1) / (↑24 + 1) +
                          2⁻¹ ^ (25 + 1) / (↑25 + 1) +
                        2⁻¹ ^ (26 + 1) / (↑26 + 1) +
                      2⁻¹ ^ (27 + 1) / (↑27 + 1) +
                    2⁻¹ ^ (28 + 1) / (↑28 + 1) +
                  2⁻¹ ^ (29 + 1) / (↑29 + 1) +
                2⁻¹ ^ (30 + 1) / (↑30 + 1) +
              2⁻¹ ^ (31 + 1) / (↑31 + 1) +
            2⁻¹ ^ (32 + 1) / (↑32 + 1) +
          2⁻¹ ^ (33 + 1) / (↑33 + 1) -
        287209 / 414355) ≤
    1 / 10 ^ 10 - 1 / 2 ^ 34

tactic: rw [abs_of_pos] <;> norm_num
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
z : Abs.abs (log 2 - Finset.sum (range 34) fun x => 2⁻¹ ^ (x + 1) / (↑x + 1)) ≤ 1 / 17179869184
⊢ Abs.abs (30417026706710207 / 51397301678363663775930777600) ≤ 7011591 / 167772160000000000

tactic: norm_num1 at *
state_before: this : Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 17179869184 + (1 / 10 ^ 10 - 1 / 2 ^ 34)
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 10 ^ 10

tactic: assumption
state_before: this : Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 10000000000
⊢ Abs.abs (log 2 - 287209 / 414355) ≤ 1 / 10000000000

tactic: rw [abs_of_pos]
state_before: ⊢ Abs.abs 2⁻¹ = 2⁻¹

tactic: norm_num
state_before: ⊢ 0 < 2⁻¹

tactic: rw [t]
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
⊢ Abs.abs 2⁻¹ < 1

tactic: norm_num
state_before: t : Abs.abs 2⁻¹ = 2⁻¹
⊢ 2⁻¹ < 1