-- File: optlib/Optlib/Algorithm/SubgradientMethod.lean
Theorem statement:
theorem extracted_formal_statement_12.{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|) (h_original_goal : -⟪gy, x - y⟫_ℝ ≤ ‖gy‖ * ‖x - 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, x - y⟫_ℝ ≤ ‖gy‖ * ‖x - y‖

Tactic: rw [← inner_neg_right, neg_sub, norm_sub_rev]

Tactic state after:
[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‖]

Premises used:
inner_neg_right : ∀ {𝕜 : Type u_1} {E : Type u_2} [inst : RCLike 𝕜] [inst_3 : SeminormedAddCommGroup E]
  [inst_4 : InnerProductSpace 𝕜 E] (x y : E), ⟪x, -y⟫_𝕜 = -⟪x, y⟫_𝕜
norm_sub_rev : ∀ {E : Type u_5} [inst : SeminormedAddGroup E] (a b : E), ‖a - b‖ = ‖b - a‖
neg_sub : ∀ {α : Type u_1} [inst : SubtractionMonoid α] (a b : α), -(a - b) = b - a