-- File: optlib/Optlib/Algorithm/SubgradientMethod.lean
Theorem statement:
theorem extracted_formal_statement_13.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {G : NNReal} (hf : ConvexOn ℝ Set.univ f) (hc : ContinuousOn f Set.univ)
  (h : ∀ ⦃x g : E⦄, g ∈ SubderivAt f x → ‖g‖ ≤ ↑G) (x y gx : E) (hx₁ : gx ∈ SubderivAt f x) (hx₃ : ‖gx‖ ≤ ↑G)
  (hx₂ : f y ≥ f x + ⟪gx, y - x⟫_ℝ) (hx₄ : f x - f y ≤ ⟪gx, x - y⟫_ℝ) (gy : E) (hy₁ : gy ∈ SubderivAt f y)
  (hy₃ : ‖gy‖ ≤ ↑G) (hy₂ : f x ≥ f y + ⟪gy, x - y⟫_ℝ) (hy₄ : f x - f y ≥ ⟪gy, x - y⟫_ℝ) (hG₁ : ↑G = ENNReal.ofReal ↑G)
  (hG₂ : ENNReal.ofReal (↑G * dist x y) = ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y)) (hG₃ : 0 ≤ ↑G * dist x y)
  (h₁ : dist (f x) (f y) = |f x - f y|) : ⟪gy, y - x⟫_ℝ ≤ ‖gy‖ * ‖y - x‖ := sorry

Tactic state before:
case a
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
G : NNReal
hf : ConvexOn ℝ Set.univ f
hc : ContinuousOn f Set.univ
h : ∀ ⦃x g : E⦄, g ∈ SubderivAt f x → ‖g‖ ≤ ↑G
x y gx : E
hx₁ : gx ∈ SubderivAt f x
hx₃ : ‖gx‖ ≤ ↑G
hx₂ : f y ≥ f x + ⟪gx, y - x⟫_ℝ
hx₄ : f x - f y ≤ ⟪gx, x - y⟫_ℝ
gy : E
hy₁ : gy ∈ SubderivAt f y
hy₃ : ‖gy‖ ≤ ↑G
hy₂ : f x ≥ f y + ⟪gy, x - y⟫_ℝ
hy₄ : f x - f y ≥ ⟪gy, x - y⟫_ℝ
hG₁ : ↑G = ENNReal.ofReal ↑G
hG₂ : ENNReal.ofReal (↑G * dist x y) = ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y)
hG₃ : 0 ≤ ↑G * dist x y
h₁ : dist (f x) (f y) = |f x - f y|
⊢ ⟪gy, y - x⟫_ℝ ≤ ‖gy‖ * ‖y - x‖

Tactic: apply real_inner_le_norm

Tactic state after:

Premises used:
real_inner_le_norm : ∀ {F : Type u_3} [inst : SeminormedAddCommGroup F] [inst_3 : InnerProductSpace ℝ F] (x y : F),
  ⟪x, y⟫_ℝ ≤ ‖x‖ * ‖y‖