theorem extracted_formal_statement_3.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {l : NNReal} {a : ℝ} (h₁ : ∀ (x₁ : E), HasGradientAt f (f' x₁) x₁)
  (h₂ : ↑l > 0) (ha₁ : ↑l ≤ 1 / a) (ha₂ : a > 0) (h₃ : LipschitzWith l f') (x : E)
  (h_original_goal : f x + (↑l / 2 * a * a - a) * ‖f' x‖ ^ 2 ≤ f x + -a / 2 * ‖f' x‖ ^ 2) : 0 ≤ ‖f' x‖ ^ 2 := sorry

State before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
f' : E → E
l : NNReal
a : ℝ
h₁ : ∀ (x₁ : E), HasGradientAt f (f' x₁) x₁
h₂ : ↑l > 0
ha₁ : ↑l ≤ 1 / a
ha₂ : a > 0
h₃ : LipschitzWith l f'
x : E
⊢ f x + (↑l / 2 * a * a - a) * ‖f' x‖ ^ 2 ≤ f x + -a / 2 * ‖f' x‖ ^ 2

Tactic: simp only [add_le_add_iff_left, gt_iff_lt, norm_pos_iff, ne_eq]
    apply mul_le_mul_of_nonneg_right
    · simp;
  calc
    l / 2 * a * a = (l * a) * (a / 2) := by ring_nf
    _ ≤ 1 * (a / 2) := by
      apply mul_le_mul_of_nonneg _ (by linarith) (by positivity) (by linarith)
      · exact (le_div_iff₀ ha₂).mp ha₁
    _ = -a / 2 + a := by ring_nf

State after:
[case a0
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f : E → ℝ
 f' : E → E
 l : NNReal
 a : ℝ
 h₁ : ∀ (x₁ : E), HasGradientAt f (f' x₁) x₁
 h₂ : ↑l > 0
 ha₁ : ↑l ≤ 1 / a
 ha₂ : a > 0
 h₃ : LipschitzWith l f'
 x : E
 ⊢ 0 ≤ ‖f' x‖ ^ 2]

Relevant lemmas:
error