-- File: optlib/Optlib/Algorithm/ProximalGradient.lean
Theorem statement:
theorem extracted_formal_statement_13.{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)
  (th' : ConvexOn ℝ univ (proximal_gradient_method.t f h f' x₀ • h)) :
  let Gt := fun x =>
    (1 / proximal_gradient_method.t f h f' x₀) •
      (x -
        prox_point_c' (proximal_gradient_method.t f h f' x₀ • h) (x - proximal_gradient_method.t f h f' x₀ • f' x) th
          th');
  (∀ (z : E), Gt z - f' z ∈ SubderivAt h (z - proximal_gradient_method.t f h f' x₀ • Gt z)) →
    ∀ (x : E),
      let y := x - proximal_gradient_method.t f h f' x₀ • Gt x;
      f y ≤ f x + inner (f' x) (y - x) + ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖y - x‖ ^ 2 := 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
th' : ConvexOn ℝ univ (proximal_gradient_method.t f h f' x₀ • h)
Gt : E → E :=
  fun x =>
    (1 / proximal_gradient_method.t f h f' x₀) •
      (x -
        prox_point_c' (proximal_gradient_method.t f h f' x₀ • h) (x - proximal_gradient_method.t f h f' x₀ • f' x) th
          th')
φ : E → ℝ := fun x => f x + h x
hG : ∀ (z : E), Gt z - f' z ∈ SubderivAt h (z - proximal_gradient_method.t f h f' x₀ • Gt z)
x : E
y : E := x - proximal_gradient_method.t f h f' x₀ • Gt x
⊢ f y ≤ f x + inner (f' x) (y - x) + ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖y - x‖ ^ 2

Tactic: apply lipschitz_continuos_upper_bound' alg.h₁ alg.h₂

Tactic state after:

Premises used:
lipschitz_continuos_upper_bound' : ∀ {E : Type u_2} [inst : NormedAddCommGroup E] [inst_4 : InnerProductSpace ℝ E]
  [inst_5 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {l : NNReal},
  (∀ (x₁ : E), HasGradientAt f (f' x₁) x₁) →
    LipschitzWith l f' → ∀ (x y : E), f y ≤ f x + inner (f' x) (y - x) + ↑l / 2 * ‖y - x‖ ^ 2