Theorem: Real.pi_lt_sqrtTwoAddSeries
File: Mathlib/Data/Real/Pi/Bounds.lean

tactic: apply lt_of_lt_of_le this (le_of_eq _)
state_before: n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ π < 2 ^ (n + 1) * sqrt (2 - sqrtTwoAddSeries 0 n) + 1 / 4 ^ n

tactic: rw [add_mul]
state_before: n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2) =
    2 ^ (n + 1) * sqrt (2 - sqrtTwoAddSeries 0 n) + 1 / 4 ^ n

tactic: congr 1
state_before: n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ sqrt (2 - sqrtTwoAddSeries 0 n) / 2 * 2 ^ (n + 2) + 1 / (2 ^ n) ^ 3 / 4 * 2 ^ (n + 2) =
    2 ^ (n + 1) * sqrt (2 - sqrtTwoAddSeries 0 n) + 1 / 4 ^ n

tactic: rw [pow_succ, ← pow_mul, mul_comm n 2, pow_mul, show (2 : ℝ) ^ 2 = 4 by norm_num, pow_succ,
  pow_succ, ← mul_assoc (2 : ℝ), show (2 : ℝ) * 2 = 4 by norm_num, ← mul_assoc, div_mul_cancel,
  mul_comm ((2 : ℝ) ^ n), ← div_div, div_mul_cancel]
state_before: case e_a
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 1 / (2 ^ n) ^ 3 / 4 * 2 ^ (n + 2) = 1 / 4 ^ n

tactic: apply pow_ne_zero
state_before: case e_a.h
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 2 ^ n ≠ 0

case e_a.h
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 4 ≠ 0

tactic: norm_num
state_before: case e_a.h.h
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 2 ≠ 0

case e_a.h
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 4 ≠ 0

tactic: norm_num
state_before: case e_a.h
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 4 ≠ 0

tactic: rw [← div_lt_iff, ← sin_pi_over_two_pow_succ]
state_before: n : ℕ
⊢ π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)

tactic: refine' lt_of_lt_of_le (lt_add_of_sub_right_lt (sin_gt_sub_cube _ _)) _
state_before: n : ℕ
⊢ π / 2 ^ (n + 2) < sin (π / 2 ^ (n + 2)) + 1 / (2 ^ n) ^ 3 / 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: apply add_le_add_left
state_before: case refine'_3
n : ℕ
⊢ sin (π / 2 ^ (n + 2)) + (π / 2 ^ (n + 2)) ^ 3 / 4 ≤ sin (π / 2 ^ (n + 2)) + 1 / (2 ^ n) ^ 3 / 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: rw [div_le_div_right]
state_before: case refine'_3.bc
n : ℕ
⊢ (π / 2 ^ (n + 2)) ^ 3 / 4 ≤ 1 / (2 ^ n) ^ 3 / 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: rw [le_div_iff, ← mul_pow]
state_before: case refine'_3.bc
n : ℕ
⊢ (π / 2 ^ (n + 2)) ^ 3 ≤ 1 / (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: refine' le_trans _ (le_of_eq (one_pow 3))
state_before: case refine'_3.bc
n : ℕ
⊢ (π / 2 ^ (n + 2) * 2 ^ n) ^ 3 ≤ 1

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: apply pow_le_pow_of_le_left
state_before: case refine'_3.bc
n : ℕ
⊢ (π / 2 ^ (n + 2) * 2 ^ n) ^ 3 ≤ 1 ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: rw [← le_div_iff]
state_before: case refine'_3.bc.hab
n : ℕ
⊢ π / 2 ^ (n + 2) * 2 ^ n ≤ 1

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: refine' le_trans ((div_le_div_right _).mpr pi_le_four) _
state_before: case refine'_3.bc.hab
n : ℕ
⊢ π / 2 ^ (n + 2) ≤ 1 / 2 ^ n

case refine'_3.bc.hab
n : ℕ
⊢ 0 < 2 ^ n

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: apply pow_pos
state_before: case refine'_3.bc.hab.refine'_1
n : ℕ
⊢ 0 < 2 ^ (n + 2)

case refine'_3.bc.hab.refine'_2
n : ℕ
⊢ 4 / 2 ^ (n + 2) ≤ 1 / 2 ^ n

case refine'_3.bc.hab
n : ℕ
⊢ 0 < 2 ^ n

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: norm_num
state_before: case refine'_3.bc.hab.refine'_1.H
n : ℕ
⊢ 0 < 2

case refine'_3.bc.hab.refine'_2
n : ℕ
⊢ 4 / 2 ^ (n + 2) ≤ 1 / 2 ^ n

case refine'_3.bc.hab
n : ℕ
⊢ 0 < 2 ^ n

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: rw [pow_succ, pow_succ, ← mul_assoc, ← div_div]
state_before: case refine'_3.bc.hab.refine'_2
n : ℕ
⊢ 4 / 2 ^ (n + 2) ≤ 1 / 2 ^ n

case refine'_3.bc.hab
n : ℕ
⊢ 0 < 2 ^ n

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: all_goals (repeat' apply pow_pos); norm_num
state_before: case refine'_3.bc.hab.refine'_2
n : ℕ
⊢ 4 / (2 * 2) / 2 ^ n ≤ 1 / 2 ^ n

case refine'_3.bc.hab
n : ℕ
⊢ 0 < 2 ^ n

case refine'_3.bc
n : ℕ
⊢ 0 < (2 ^ n) ^ 3

case refine'_3.bc
n : ℕ
⊢ 0 < 4

n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: apply div_pos pi_pos
state_before: case refine'_1
n : ℕ
⊢ 0 < π / 2 ^ (n + 2)

tactic: apply pow_pos
state_before: case refine'_1
n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: norm_num
state_before: case refine'_1.H
n : ℕ
⊢ 0 < 2

tactic: rw [div_le_iff']
state_before: case refine'_2
n : ℕ
⊢ π / 2 ^ (n + 2) ≤ 1

tactic: refine' le_trans pi_le_four _
state_before: case refine'_2
n : ℕ
⊢ π ≤ 2 ^ (n + 2) * 1

tactic: simp only [show (4 : ℝ) = (2 : ℝ) ^ 2 by norm_num, mul_one]
state_before: case refine'_2
n : ℕ
⊢ 4 ≤ 2 ^ (n + 2) * 1

tactic: apply pow_le_pow
state_before: case refine'_2
n : ℕ
⊢ 2 ^ 2 ≤ 2 ^ (n + 2)

tactic: norm_num
state_before: case refine'_2.ha
n : ℕ
⊢ 1 ≤ 2

case refine'_2.h
n : ℕ
⊢ 2 ≤ n + 2

tactic: apply le_add_of_nonneg_left
state_before: case refine'_2.h
n : ℕ
⊢ 2 ≤ n + 2

tactic: apply Nat.zero_le
state_before: case refine'_2.h.h
n : ℕ
⊢ 0 ≤ n

tactic: norm_num
state_before: n : ℕ
⊢ 4 = 2 ^ 2

tactic: apply pow_pos
state_before: case refine'_2
n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: norm_num
state_before: case refine'_2.H
n : ℕ
⊢ 0 < 2

tactic: apply le_of_lt
state_before: case refine'_3.bc.ha
n : ℕ
⊢ 0 ≤ π / 2 ^ (n + 2) * 2 ^ n

tactic: apply mul_pos
state_before: case refine'_3.bc.ha.a
n : ℕ
⊢ 0 < π / 2 ^ (n + 2) * 2 ^ n

tactic: apply div_pos pi_pos
state_before: case refine'_3.bc.ha.a.ha
n : ℕ
⊢ 0 < π / 2 ^ (n + 2)

case refine'_3.bc.ha.a.hb
n : ℕ
⊢ 0 < 2 ^ n

tactic: apply pow_pos
state_before: case refine'_3.bc.ha.a.ha
n : ℕ
⊢ 0 < 2 ^ (n + 2)

case refine'_3.bc.ha.a.hb
n : ℕ
⊢ 0 < 2 ^ n

tactic: norm_num
state_before: case refine'_3.bc.ha.a.ha.H
n : ℕ
⊢ 0 < 2

case refine'_3.bc.ha.a.hb
n : ℕ
⊢ 0 < 2 ^ n

tactic: apply pow_pos
state_before: case refine'_3.bc.ha.a.hb
n : ℕ
⊢ 0 < 2 ^ n

tactic: norm_num
state_before: case refine'_3.bc.ha.a.hb.H
n : ℕ
⊢ 0 < 2

tactic: (repeat' apply pow_pos)
state_before: n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: norm_num
state_before: case H
n : ℕ
⊢ 0 < 2

tactic: repeat' apply pow_pos
state_before: n : ℕ
⊢ 0 < 2 ^ (n + 2)

tactic: apply pow_pos
state_before: case H
n : ℕ
⊢ 0 < 2

tactic: rw [pow_succ _ (n + 1), ← mul_assoc, div_mul_cancel, mul_comm]
state_before: case e_a
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ sqrt (2 - sqrtTwoAddSeries 0 n) / 2 * 2 ^ (n + 2) = 2 ^ (n + 1) * sqrt (2 - sqrtTwoAddSeries 0 n)

tactic: norm_num
state_before: case e_a.h
n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 2 ≠ 0

tactic: norm_num
state_before: n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 2 ^ 2 = 4

tactic: norm_num
state_before: n : ℕ
this : π < (sqrt (2 - sqrtTwoAddSeries 0 n) / 2 + 1 / (2 ^ n) ^ 3 / 4) * 2 ^ (n + 2)
⊢ 2 * 2 = 4