-- File: optlib/Optlib/Algorithm/Nesterov/NesterovAccelerationSecond.lean
Theorem statement:
theorem extracted_formal_statement_137.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f h : E → ℝ} {f' : E → E} {x0 : E} {alg : Nesterov_second_fix_stepsize f h f' x0} {xm : E}
  (minφ : IsMinOn (f + h) univ xm) (k : ℕ)
  (h_original_goal :
    Nesterov_second_fix_stepsize.γ f h f' x0 (k + 1) ^ 2 / (2 * Nesterov_second_fix_stepsize.t f h f' x0 (k + 1)) *
        ‖x0 - xm‖ ^ 2 ≤
      2 * ↑(Nesterov_second_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2) :
  Nesterov_second_fix_stepsize.γ f h f' x0 (k + 1) ^ 2 / (2 * Nesterov_second_fix_stepsize.t f h f' x0 (k + 1)) ≤
    2 * ↑(Nesterov_second_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f h : E → ℝ
f' : E → E
x0 : E
alg : Nesterov_second_fix_stepsize f h f' x0
xm : E
minφ : IsMinOn (f + h) univ xm
k : ℕ
⊢ Nesterov_second_fix_stepsize.γ f h f' x0 (k + 1) ^ 2 / (2 * Nesterov_second_fix_stepsize.t f h f' x0 (k + 1)) *
      ‖x0 - xm‖ ^ 2 ≤
    2 * ↑(Nesterov_second_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2

Tactic: apply mul_le_mul_of_nonneg_right _ (sq_nonneg _)

Tactic state after:
[E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_second_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ Nesterov_second_fix_stepsize.γ f h f' x0 (k + 1) ^ 2 / (2 * Nesterov_second_fix_stepsize.t f h f' x0 (k + 1)) ≤
     2 * ↑(Nesterov_second_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2]

Premises used:
mul_le_mul_of_nonneg_right : ∀ {α : Type u_3} {a b c : α} [inst : Mul α] [inst_3 : Zero α] [inst_4 : Preorder α]
  [inst_5 : MulPosMono α], b ≤ c → 0 ≤ a → b * a ≤ c * a
sq_nonneg : ∀ {α : Type u} [inst : Semiring α] [inst_3 : LinearOrder α] [inst_4 : IsRightCancelAdd α]
  [inst_5 : ZeroLEOneClass α] [inst_6 : ExistsAddOfLE α] [inst_7 : PosMulMono α] [inst_8 : AddLeftStrictMono α] (a : α),
  0 ≤ a ^ 2