-- File: optlib/Optlib/Algorithm/SubgradientMethod.lean
Theorem statement:
theorem extracted_formal_statement_182 : 0 < 2 := sorry

Tactic state before:
case hb
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
f : E → ℝ
xm x₀ : E
alg : subgradient_method f x₀
hm : IsMinOn f Set.univ xm
ha'' :
  ∀ (s : Set ℝ) (x : ℝ),
    (∀ (b : ℝ), x ≤ b → b ∈ s) → ∃ a, ∀ (b : ℕ), a ≤ b → (Finset.range (b + 1)).sum (subgradient_method.a f x₀) ∈ s
s✝ : Set ℝ
ha' :
  ∀ (s x : Set ℝ),
    x ⊆ s →
      (∀ x_1 ∈ x, ∃ ε, 0 < ε ∧ Metric.ball x_1 ε ⊆ x) → 0 ∈ x → ∃ a, ∀ (b : ℕ), a ≤ b → subgradient_method.a f x₀ b ∈ s
t : Set ℝ
hs₁ : t ⊆ s✝
hs₂ : ∀ x ∈ t, ∃ ε, 0 < ε ∧ Metric.ball x ε ⊆ t
hs₀ : 0 ∈ t
ε : ℝ
εpos : 0 < ε
hs₂₀ : Metric.ball 0 ε ⊆ t
ha₁ : ∃ a₁, ∀ (b : ℕ), a₁ ≤ b → ‖x₀ - xm‖ ^ 2 / (2 * (Finset.range (b + 1)).sum (subgradient_method.a f x₀)) < ε / 2
hG : ¬subgradient_method.G f x₀ = 0
hpos' : ↑(subgradient_method.G f x₀) ^ 2 > 0
s : Set ℝ := {x | |x| < ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)}
c₁ : ∀ x_1 ∈ s, x_1 ∈ s
c₂ : ∀ x_1 ∈ s, ∃ ε, 0 < ε ∧ ∀ (x_2 : ℝ), dist x_2 x_1 < ε → x_2 ∈ s
⊢ 0 < 2 * ↑(subgradient_method.G f x₀) ^ 2

Tactic: apply mul_pos

Tactic state after:
[case hb.ha
 E : Type u_1
 inst✝¹ : NormedAddCommGroup E
 inst✝ : InnerProductSpace ℝ E
 f : E → ℝ
 xm x₀ : E
 alg : subgradient_method f x₀
 hm : IsMinOn f Set.univ xm
 ha'' :
   ∀ (s : Set ℝ) (x : ℝ),
     (∀ (b : ℝ), x ≤ b → b ∈ s) → ∃ a, ∀ (b : ℕ), a ≤ b → (Finset.range (b + 1)).sum (subgradient_method.a f x₀) ∈ s
 s✝ : Set ℝ
 ha' :
   ∀ (s x : Set ℝ),
     x ⊆ s →
       (∀ x_1 ∈ x, ∃ ε, 0 < ε ∧ Metric.ball x_1 ε ⊆ x) → 0 ∈ x → ∃ a, ∀ (b : ℕ), a ≤ b → subgradient_method.a f x₀ b ∈ s
 t : Set ℝ
 hs₁ : t ⊆ s✝
 hs₂ : ∀ x ∈ t, ∃ ε, 0 < ε ∧ Metric.ball x ε ⊆ t
 hs₀ : 0 ∈ t
 ε : ℝ
 εpos : 0 < ε
 hs₂₀ : Metric.ball 0 ε ⊆ t
 ha₁ : ∃ a₁, ∀ (b : ℕ), a₁ ≤ b → ‖x₀ - xm‖ ^ 2 / (2 * (Finset.range (b + 1)).sum (subgradient_method.a f x₀)) < ε / 2
 hG : ¬subgradient_method.G f x₀ = 0
 hpos' : ↑(subgradient_method.G f x₀) ^ 2 > 0
 s : Set ℝ := {x | |x| < ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)}
 c₁ : ∀ x_1 ∈ s, x_1 ∈ s
 c₂ : ∀ x_1 ∈ s, ∃ ε, 0 < ε ∧ ∀ (x_2 : ℝ), dist x_2 x_1 < ε → x_2 ∈ s
 ⊢ 0 < 2,
 case hb.hb
 E : Type u_1
 inst✝¹ : NormedAddCommGroup E
 inst✝ : InnerProductSpace ℝ E
 f : E → ℝ
 xm x₀ : E
 alg : subgradient_method f x₀
 hm : IsMinOn f Set.univ xm
 ha'' :
   ∀ (s : Set ℝ) (x : ℝ),
     (∀ (b : ℝ), x ≤ b → b ∈ s) → ∃ a, ∀ (b : ℕ), a ≤ b → (Finset.range (b + 1)).sum (subgradient_method.a f x₀) ∈ s
 s✝ : Set ℝ
 ha' :
   ∀ (s x : Set ℝ),
     x ⊆ s →
       (∀ x_1 ∈ x, ∃ ε, 0 < ε ∧ Metric.ball x_1 ε ⊆ x) → 0 ∈ x → ∃ a, ∀ (b : ℕ), a ≤ b → subgradient_method.a f x₀ b ∈ s
 t : Set ℝ
 hs₁ : t ⊆ s✝
 hs₂ : ∀ x ∈ t, ∃ ε, 0 < ε ∧ Metric.ball x ε ⊆ t
 hs₀ : 0 ∈ t
 ε : ℝ
 εpos : 0 < ε
 hs₂₀ : Metric.ball 0 ε ⊆ t
 ha₁ : ∃ a₁, ∀ (b : ℕ), a₁ ≤ b → ‖x₀ - xm‖ ^ 2 / (2 * (Finset.range (b + 1)).sum (subgradient_method.a f x₀)) < ε / 2
 hG : ¬subgradient_method.G f x₀ = 0
 hpos' : ↑(subgradient_method.G f x₀) ^ 2 > 0
 s : Set ℝ := {x | |x| < ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)}
 c₁ : ∀ x_1 ∈ s, x_1 ∈ s
 c₂ : ∀ x_1 ∈ s, ∃ ε, 0 < ε ∧ ∀ (x_2 : ℝ), dist x_2 x_1 < ε → x_2 ∈ s
 ⊢ 0 < ↑(subgradient_method.G f x₀) ^ 2]

Premises used:
mul_pos : ∀ {α : Type u_3} {a b : α} [inst : MulZeroClass α] [inst_1 : Preorder α] [inst_2 : PosMulStrictMono α],
  0 < a → 0 < b → 0 < a * b