Theorem: Behrend.log_two_mul_two_le_sqrt_log_eight
File: Mathlib/Combinatorics/Additive/AP/Three/Behrend.lean

tactic: have : (8 : ℝ) = 2 ^ ((3 : ℕ) : ℝ) := by rw [rpow_natCast]; norm_num
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ log 2 * 2 ≤ √(log 8)
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ≤ √(log 8)

tactic: rw [this, log_rpow zero_lt_two (3 : ℕ)]
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ≤ √(log 8)
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ≤ √(↑3 * log 2)

tactic: apply le_sqrt_of_sq_le
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ≤ √(↑3 * log 2)
state_after: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ (log 2 * 2) ^ 2 ≤ ↑3 * log 2

tactic: rw [mul_pow, sq (log 2), mul_assoc, mul_comm]
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ (log 2 * 2) ^ 2 ≤ ↑3 * log 2
state_after: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ^ 2 * log 2 ≤ ↑3 * log 2

tactic: refine mul_le_mul_of_nonneg_right ?_ (log_nonneg one_le_two)
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ^ 2 * log 2 ≤ ↑3 * log 2
state_after: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ^ 2 ≤ ↑3

tactic: rw [← le_div_iff]
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 * 2 ^ 2 ≤ ↑3
state_after: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 ≤ ↑3 / 2 ^ 2

case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0 < 2 ^ 2

tactic: on_goal 1 => apply log_two_lt_d9.le.trans
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 ≤ ↑3 / 2 ^ 2

case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0 < 2 ^ 2
state_after: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0.6931471808 ≤ ↑3 / 2 ^ 2

case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0 < 2 ^ 2

tactic: all_goals norm_num1
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0.6931471808 ≤ ↑3 / 2 ^ 2

case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0 < 2 ^ 2
state_after: no goals

tactic: rw [rpow_natCast]
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 8 = 2 ^ ↑3
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 8 = 2 ^ 3

tactic: norm_num
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 8 = 2 ^ 3
state_after: no goals

tactic: apply log_two_lt_d9.le.trans
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ log 2 ≤ ↑3 / 2 ^ 2
state_after: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0.6931471808 ≤ ↑3 / 2 ^ 2

tactic: norm_num1
state_before: case h
α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 8 = 2 ^ ↑3
⊢ 0 < 2 ^ 2
state_after: no goals