-- File: optlib/Optlib/Algorithm/ProximalGradient.lean
Theorem statement:
theorem extracted_formal_statement_3.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] [inst_3 : ProperSpace E] {x₀ : E} {f : E → ℝ} {f' : E → E} {h : E → ℝ}
  {alg : proximal_gradient_method f h f' x₀} (th : ContinuousOn (proximal_gradient_method.t f h f' x₀ • h) univ)
  (h_original_goal : ConvexOn ℝ univ (proximal_gradient_method.t f h f' x₀ • h)) :
  0 ≤ proximal_gradient_method.t f h f' x₀ := sorry

Tactic state before:
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
inst✝¹ : CompleteSpace E
inst✝ : ProperSpace E
x₀ : E
f : E → ℝ
f' : E → E
h : E → ℝ
alg : proximal_gradient_method f h f' x₀
k : ℕ+
th : ContinuousOn (proximal_gradient_method.t f h f' x₀ • h) univ
⊢ ConvexOn ℝ univ (proximal_gradient_method.t f h f' x₀ • h)

Tactic: apply ConvexOn.smul

Tactic state after:
[case hc
 E : Type u_1
 inst✝³ : NormedAddCommGroup E
 inst✝² : InnerProductSpace ℝ E
 inst✝¹ : CompleteSpace E
 inst✝ : ProperSpace E
 x₀ : E
 f : E → ℝ
 f' : E → E
 h : E → ℝ
 alg : proximal_gradient_method f h f' x₀
 k : ℕ+
 th : ContinuousOn (proximal_gradient_method.t f h f' x₀ • h) univ
 ⊢ 0 ≤ proximal_gradient_method.t f h f' x₀,
 case hf
 E : Type u_1
 inst✝³ : NormedAddCommGroup E
 inst✝² : InnerProductSpace ℝ E
 inst✝¹ : CompleteSpace E
 inst✝ : ProperSpace E
 x₀ : E
 f : E → ℝ
 f' : E → E
 h : E → ℝ
 alg : proximal_gradient_method f h f' x₀
 k : ℕ+
 th : ContinuousOn (proximal_gradient_method.t f h f' x₀ • h) univ
 ⊢ ConvexOn ℝ univ h]

Premises used:
ConvexOn.smul : ∀ {𝕜 : Type u_1} {E : Type u_2} {β : Type u_5} [inst : OrderedCommSemiring 𝕜] [inst_4 : AddCommMonoid E]
  [inst_5 : OrderedAddCommMonoid β] [inst_6 : SMul 𝕜 E] [inst_7 : Module 𝕜 β] [inst_8 : OrderedSMul 𝕜 β] {s : Set E}
  {f : E → β} {c : 𝕜}, 0 ≤ c → ConvexOn 𝕜 s f → ConvexOn 𝕜 s fun x => c • f x