-- File: optlib/Optlib/Algorithm/SubgradientMethod.lean
Theorem statement:
theorem extracted_formal_statement_14.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  {f : E → ℝ} {G : NNReal} (h : ∀ (x y : E), edist (f x) (f y) ≤ ↑G * edist x y) (x g : E) (h₂ : g ∈ SubderivAt f x)
  (h₃ : ↑G < ‖g‖) :
  let y := x + (1 / ‖g‖) • g;
  y = x + (1 / ‖g‖) • g → f y ≥ f x + ⟪g, y - x⟫_ℝ → ‖g‖ ≠ 0 → 0 ≤ ↑G := sorry

Tactic state before:
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
f : E → ℝ
G : NNReal
h : ∀ (x y : E), edist (f x) (f y) ≤ ↑G * edist x y
x g : E
h₂ : g ∈ SubderivAt f x
h₃ : ↑G < ‖g‖
y : E := x + (1 / ‖g‖) • g
hy : y = x + (1 / ‖g‖) • g
hy₂ : f y ≥ f x + ⟪g, y - x⟫_ℝ
⊢ ‖g‖ ≠ 0

Tactic: apply ne_of_gt (lt_of_le_of_lt _ h₃)

Tactic state after:
[E : Type u_1
 inst✝¹ : NormedAddCommGroup E
 inst✝ : InnerProductSpace ℝ E
 f : E → ℝ
 G : NNReal
 h : ∀ (x y : E), edist (f x) (f y) ≤ ↑G * edist x y
 x g : E
 h₂ : g ∈ SubderivAt f x
 h₃ : ↑G < ‖g‖
 y : E := x + (1 / ‖g‖) • g
 hy : y = x + (1 / ‖g‖) • g
 hy₂ : f y ≥ f x + ⟪g, y - x⟫_ℝ
 ⊢ 0 ≤ ↑G]

Premises used:
lt_of_le_of_lt : ∀ {α : Type u_1} [inst : Preorder α] {a b c : α}, a ≤ b → b < c → a < c
ne_of_gt : ∀ {α : Type u_1} [inst : Preorder α] {a b : α}, b < a → a ≠ b