theorem extracted_formal_statement_19.{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‖ →
      ‖g‖ ≠ 0 →
        ⟪g, y - x⟫_ℝ = ‖g‖ →
          f y - f x ≥ ‖g‖ →
            ENNReal.ofReal (dist (f x) (f y)) ≤ ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y) →
              ↑G = ENNReal.ofReal ↑G →
                ENNReal.ofReal (↑G * dist x y) = ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y) → 0 ≤ ↑G := sorry

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‖
hg₁ : ‖g‖ ≠ 0
hl : ⟪g, y - x⟫_ℝ = ‖g‖
x✝ : f y - f x ≥ ‖g‖
h₅ : ENNReal.ofReal (dist (f x) (f y)) ≤ ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y)
hG₁ : ↑G = ENNReal.ofReal ↑G
⊢ ENNReal.ofReal (↑G * dist x y) = ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y)

Tactic: apply ENNReal.ofReal_mul

State after:
[case hp
 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‖
 hg₁ : ‖g‖ ≠ 0
 hl : ⟪g, y - x⟫_ℝ = ‖g‖
 x✝ : f y - f x ≥ ‖g‖
 h₅ : ENNReal.ofReal (dist (f x) (f y)) ≤ ENNReal.ofReal ↑G * ENNReal.ofReal (dist x y)
 hG₁ : ↑G = ENNReal.ofReal ↑G
 ⊢ 0 ≤ ↑G]

Relevant lemmas:
ENNReal.ofReal_mul : ∀ {p q : ℝ}, 0 ≤ p → ENNReal.ofReal (p * q) = ENNReal.ofReal p * ENNReal.ofReal q