Theorem: Behrend.le_sqrt_log
File: Mathlib/Combinatorics/Additive/Behrend.lean

tactic: refine' (mul_le_mul_of_nonneg_right ((log_le_log _ <| by norm_num1).2
    two_div_one_sub_two_div_e_le_eight) <| by norm_num1).trans _
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ log (2 / (1 - 2 / exp 1)) * (69 / 50) ≤ Real.sqrt (log ↑N)

tactic: have l8 : log 8 = (3 : ℕ) * log 2 := by
  rw [← log_rpow zero_lt_two, rpow_nat_cast]
  norm_num
state_before: case refine'_2
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ log 8 * (69 / 50) ≤ Real.sqrt (log ↑N)

tactic: rw [l8]
state_before: case refine'_2
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ log 8 * (69 / 50) ≤ Real.sqrt (log ↑N)

tactic: apply le_sqrt_of_sq_le (le_trans _ this)
state_before: case refine'_2
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ ↑3 * log 2 * (69 / 50) ≤ Real.sqrt (log ↑N)

tactic: rw [mul_right_comm, mul_pow, sq (log 2), ← mul_assoc]
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ (↑3 * log 2 * (69 / 50)) ^ 2 ≤ ↑12 * log 2

tactic: apply mul_le_mul_of_nonneg_right _ (log_nonneg one_le_two)
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ (↑3 * (69 / 50)) ^ 2 * log 2 * log 2 ≤ ↑12 * log 2

tactic: rw [← le_div_iff']
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ (↑3 * (69 / 50)) ^ 2 * log 2 ≤ ↑12

tactic: exact sq_pos_of_ne_zero _ (by norm_num1)
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ 0 < (↑3 * (69 / 50)) ^ 2

tactic: rw [← log_rpow zero_lt_two, log_le_log, rpow_nat_cast]
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ ↑12 * log 2 ≤ log ↑N

tactic: rw [cast_pos]
state_before: case h₁
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < ↑N

tactic: exact hN.trans_lt' (by norm_num1)
state_before: case h₁
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < N

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 2 ^ 12 ≤ ↑N

tactic: exact_mod_cast hN
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 4096 ≤ ↑N

tactic: exact rpow_pos_of_pos zero_lt_two _
state_before: case h
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < 2 ^ ↑12

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
⊢ 0 < 4096

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ 0 < 8

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ 0 ≤ 69 / 50

tactic: refine' div_pos zero_lt_two _
state_before: case refine'_1
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ 0 < 2 / (1 - 2 / exp 1)

tactic: rw [sub_pos, div_lt_one (exp_pos _)]
state_before: case refine'_1
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ 0 < 1 - 2 / exp 1

tactic: exact exp_one_gt_d9.trans_le' (by norm_num1)
state_before: case refine'_1
α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ 2 < exp 1

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ 2 ≤ 2.7182818283

tactic: rw [← log_rpow zero_lt_two, rpow_nat_cast]
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ log 8 = ↑3 * log 2

tactic: norm_num
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
⊢ log 8 = log (2 ^ 3)

tactic: exact log_two_lt_d9.le.trans (by norm_num1)
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ log 2 ≤ ↑12 / (↑3 * (69 / 50)) ^ 2

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ 0.6931471808 ≤ ↑12 / (↑3 * (69 / 50)) ^ 2

tactic: norm_num1
state_before: α : Type ?u.651487
β : Type ?u.651490
n d k N : ℕ
x : Fin n → ℕ
hN : 4096 ≤ N
this : ↑12 * log 2 ≤ log ↑N
l8 : log 8 = ↑3 * log 2
⊢ ↑3 * (69 / 50) ≠ 0