theorem extracted_formal_statement_23.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} (xm x₀ : E) {alg : subgradient_method f x₀} {s : ℝ}
  (hm : IsMinOn f Set.univ xm) (ha' : ∀ (n : ℕ), subgradient_method.a f x₀ n * ‖subgradient_method.g f x₀ n‖ = s)
  (hs : s > 0) (k : ℕ)
  (heq :
    (Set.range fun x => f (subgradient_method.x f x₀ ↑x)) =
      {x | ∃ i ∈ Finset.range (k + 1), f (subgradient_method.x f x₀ i) = x})
  (hnek : Nonempty { x // x ∈ Finset.range (k + 1) })
  (h' : ∀ ⦃x g : E⦄, g ∈ SubderivAt f x → ‖g‖ ≤ ↑(subgradient_method.G f x₀))
  (h₁ :
    ∀ ⦃i : ℕ⦄,
      i ≥ 0 ∧ i ≤ k →
        ‖subgradient_method.x f x₀ (i + 1) - xm‖ ^ 2 ≤
          ‖subgradient_method.x f x₀ i - xm‖ ^ 2 -
              2 * subgradient_method.a f x₀ i *
                (sInf {x | ∃ i ∈ Finset.range (k + 1), f (subgradient_method.x f x₀ i) = x} - f xm) +
            ‖subgradient_method.a f x₀ i‖ ^ 2 * ‖subgradient_method.g f x₀ i‖ ^ 2)
  (h₁' :
    ∀ ⦃i : ℕ⦄,
      i ≥ 0 ∧ i ≤ k →
        subgradient_method.a f x₀ i *
            (2 * (sInf {x | ∃ i ∈ Finset.range (k + 1), f (subgradient_method.x f x₀ i) = x} - f xm)) ≤
          ‖subgradient_method.x f x₀ i - xm‖ ^ 2 - ‖subgradient_method.x f x₀ (i + 1) - xm‖ ^ 2 + s ^ 2)
  (h₂ :
    (2 * ∑ i ∈ Finset.range (k + 1), subgradient_method.a f x₀ i) *
        (sInf {x | ∃ i < k + 1, f (subgradient_method.x f x₀ i) = x} - f xm) ≤
      ‖x₀ - xm‖ ^ 2 - ‖subgradient_method.x f x₀ (k + 1) - xm‖ ^ 2 + (↑k + 1) * s ^ 2)
  (hG : ↑(subgradient_method.G f x₀) > 0)
  (inq₁ : ∑ x ∈ Finset.range (k + 1), subgradient_method.a f x₀ x ≥ (↑k + 1) * (s / ↑(subgradient_method.G f x₀))) :
  (↑k + 1) * (s / ↑(subgradient_method.G f x₀)) > 0 := sorry

State before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
xm x₀ : E
alg : subgradient_method f x₀
s : ℝ
hm : IsMinOn f Set.univ xm
ha' : ∀ (n : ℕ), subgradient_method.a f x₀ n * ‖subgradient_method.g f x₀ n‖ = s
hs : s > 0
k : ℕ
heq :
  (Set.range fun x => f (subgradient_method.x f x₀ ↑x)) =
    {x | ∃ i ∈ Finset.range (k + 1), f (subgradient_method.x f x₀ i) = x}
hnek : Nonempty { x // x ∈ Finset.range (k + 1) }
h' : ∀ ⦃x g : E⦄, g ∈ SubderivAt f x → ‖g‖ ≤ ↑(subgradient_method.G f x₀)
h₁ :
  ∀ ⦃i : ℕ⦄,
    i ≥ 0 ∧ i ≤ k →
      ‖subgradient_method.x f x₀ (i + 1) - xm‖ ^ 2 ≤
        ‖subgradient_method.x f x₀ i - xm‖ ^ 2 -
            2 * subgradient_method.a f x₀ i *
              (sInf {x | ∃ i ∈ Finset.range (k + 1), f (subgradient_method.x f x₀ i) = x} - f xm) +
          ‖subgradient_method.a f x₀ i‖ ^ 2 * ‖subgradient_method.g f x₀ i‖ ^ 2
h₁' :
  ∀ ⦃i : ℕ⦄,
    i ≥ 0 ∧ i ≤ k →
      subgradient_method.a f x₀ i *
          (2 * (sInf {x | ∃ i ∈ Finset.range (k + 1), f (subgradient_method.x f x₀ i) = x} - f xm)) ≤
        ‖subgradient_method.x f x₀ i - xm‖ ^ 2 - ‖subgradient_method.x f x₀ (i + 1) - xm‖ ^ 2 + s ^ 2
h₂ :
  (2 * ∑ i ∈ Finset.range (k + 1), subgradient_method.a f x₀ i) *
      (sInf {x | ∃ i < k + 1, f (subgradient_method.x f x₀ i) = x} - f xm) ≤
    ‖x₀ - xm‖ ^ 2 - ‖subgradient_method.x f x₀ (k + 1) - xm‖ ^ 2 + (↑k + 1) * s ^ 2
hG : ↑(subgradient_method.G f x₀) > 0
inq₁ : ∑ x ∈ Finset.range (k + 1), subgradient_method.a f x₀ x ≥ (↑k + 1) * (s / ↑(subgradient_method.G f x₀))
⊢ (↑k + 1) * (s / ↑(subgradient_method.G f x₀)) > 0

Tactic: apply mul_pos
    · apply add_pos_of_nonneg_of_pos (Nat.cast_nonneg k) zero_lt_one
    · apply div_pos hs hG

State after:

Relevant lemmas:
zero_lt_one : ∀ {α : Type u_1} [inst : Zero α] [inst_3 : One α] [inst_4 : PartialOrder α] [inst_5 : ZeroLEOneClass α]
  [inst_6 : NeZero 1], 0 < 1
div_pos : ∀ {G₀ : Type u_2} [inst : GroupWithZero G₀] [inst_3 : PartialOrder G₀] [inst_4 : ZeroLEOneClass G₀]
  [inst_5 : PosMulReflectLT G₀] {a b : G₀} [inst_6 : PosMulStrictMono G₀], 0 < a → 0 < b → 0 < a / b
mul_pos : ∀ {α : Type u_3} {a b : α} [inst : MulZeroClass α] [inst_3 : Preorder α] [inst_4 : PosMulStrictMono α],
  0 < a → 0 < b → 0 < a * b
Nat.cast_nonneg : ∀ {α : Type u_3} [inst : OrderedSemiring α] (n : ℕ), 0 ≤ ↑n
add_pos_of_nonneg_of_pos : ∀ {α : Type u_1} [inst : AddZeroClass α] [inst_3 : Preorder α] [inst_4 : AddLeftStrictMono α]
  {a b : α}, 0 ≤ a → 0 < b → 0 < a + b