-- File: optlib/Optlib/Algorithm/GD/GradientDescentStronglyConvex.lean
Theorem statement:
theorem extracted_formal_statement_51.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {xm : E} {l : NNReal} (h₁ : ∀ (x : E), HasGradientAt f (f' x) x)
  (h₂ : LipschitzWith l f') (min : IsMinOn f univ xm) (hl : ↑l > 0) (eq1 : ‖f' xm‖ ^ 2 / (2 * ↑l) ≤ 0) (x : 0 < 2 * ↑l)
  (h_original_goal : 0 ≤ ‖f' xm‖ ^ 2 / (2 * ↑l)) : 0 ≤ ‖f' xm‖ ^ 2 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
f' : E → E
xm : E
l : NNReal
h₁ : ∀ (x : E), HasGradientAt f (f' x) x
h₂ : LipschitzWith l f'
min : IsMinOn f univ xm
hl : ↑l > 0
eq1 : ‖f' xm‖ ^ 2 / (2 * ↑l) ≤ 0
x✝ : 0 < 2 * ↑l
⊢ 0 ≤ ‖f' xm‖ ^ 2 / (2 * ↑l)

Tactic: apply div_nonneg

Tactic state after:
[case ha
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f : E → ℝ
 f' : E → E
 xm : E
 l : NNReal
 h₁ : ∀ (x : E), HasGradientAt f (f' x) x
 h₂ : LipschitzWith l f'
 min : IsMinOn f univ xm
 hl : ↑l > 0
 eq1 : ‖f' xm‖ ^ 2 / (2 * ↑l) ≤ 0
 x✝ : 0 < 2 * ↑l
 ⊢ 0 ≤ ‖f' xm‖ ^ 2,
 case hb
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f : E → ℝ
 f' : E → E
 xm : E
 l : NNReal
 h₁ : ∀ (x : E), HasGradientAt f (f' x) x
 h₂ : LipschitzWith l f'
 min : IsMinOn f univ xm
 hl : ↑l > 0
 eq1 : ‖f' xm‖ ^ 2 / (2 * ↑l) ≤ 0
 x✝ : 0 < 2 * ↑l
 ⊢ 0 ≤ 2 * ↑l]

Premises used:
div_nonneg : ∀ {G₀ : Type u_2} [inst : GroupWithZero G₀] [inst_3 : PartialOrder G₀] [inst_4 : ZeroLEOneClass G₀]
  [inst_5 : PosMulReflectLT G₀] {a b : G₀} [inst_6 : PosMulMono G₀], 0 ≤ a → 0 ≤ b → 0 ≤ a / b