-- File: optlib/Optlib/Algorithm/BCD/Convergence.lean
Theorem statement:
theorem extracted_formal_statement_106.{u_2, u_1} {E : Type u_1} {F : Type u_2} [inst : NormedAddCommGroup E]
  [inst_1 : InnerProductSpace ℝ E] [inst_2 : CompleteSpace E] [inst_3 : NormedAddCommGroup F]
  [inst_4 : InnerProductSpace ℝ F] [inst_5 : CompleteSpace F] {f : E → ℝ} {g : F → ℝ} {H : WithLp 2 (E × F) → ℝ}
  {x0 : E} {y0 : F} {l : NNReal} {alg : BCD f g H l x0 y0} (γ : ℝ) (hγ : γ > 1) (ck : ∀ (k : ℕ), alg.c k = 1 / (γ * ↑l))
  (dk : ∀ (k : ℕ), alg.d k = 1 / (γ * ↑l)) (k : ℕ)
  (lip : ∀ (x y : WithLp 2 (E × F)), ‖gradient H x - gradient H y‖ ≤ ↑l * ‖x - y‖) (cpos' : (alg.c k)⁻¹ ≥ 0)
  (dpos' : (alg.d k)⁻¹ ≥ 0) (h1 : ‖(subdiff k).1‖ ≤ ↑l * (γ + 1) * ‖z (k + 1) - z k‖)
  (this : ‖(z (k + 1) - z k).2‖ ≤ ‖z (k + 1) - z k‖) :
  (alg.d k)⁻¹ * ‖(z (k + 1)).2 - (z k).2‖ ≤ (alg.d k)⁻¹ * ‖z (k + 1) - z k‖ := sorry

Tactic state before:
E : Type u_1
F : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
f : E → ℝ
g : F → ℝ
H : WithLp 2 (E × F) → ℝ
x0 : E
y0 : F
l : NNReal
alg : BCD f g H l x0 y0
γ : ℝ
hγ : γ > 1
ck : ∀ (k : ℕ), alg.c k = 1 / (γ * ↑l)
dk : ∀ (k : ℕ), alg.d k = 1 / (γ * ↑l)
k : ℕ
lip : ∀ (x y : WithLp 2 (E × F)), ‖gradient H x - gradient H y‖ ≤ ↑l * ‖x - y‖
cpos' : (alg.c k)⁻¹ ≥ 0
dpos' : (alg.d k)⁻¹ ≥ 0
h1 : ‖(subdiff k).1‖ ≤ ↑l * (γ + 1) * ‖z (k + 1) - z k‖
a : F := (alg.d k)⁻¹ • (alg.y k - alg.y (k + 1))
this : ‖(z (k + 1) - z k).2‖ ≤ ‖z (k + 1) - z k‖
⊢ (alg.d k)⁻¹ * ‖(z (k + 1)).2 - (z k).2‖ ≤ (alg.d k)⁻¹ * ‖z (k + 1) - z k‖

Tactic: apply mul_le_mul_of_nonneg_left this dpos'

Tactic state after:

Premises used:
mul_le_mul_of_nonneg_left : ∀ {α : Type u_3} {a b c : α} [inst : Mul α] [inst_6 : Zero α] [inst_7 : Preorder α]
  [inst_8 : PosMulMono α], b ≤ c → 0 ≤ a → a * b ≤ a * c