zzhisthebest/LeanBenchmark huggingface dataset:
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_22.{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),
        f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
          f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
            proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2) →
      proximal_gradient_method.t f h f' x₀ * ↑(proximal_gradient_method.L f h f' x₀) /
          ↑(proximal_gradient_method.L f h f' x₀) =
        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
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)
fieq1 :
  ∀ (x : E),
    f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
      f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
        proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2
x : E
⊢ proximal_gradient_method.t f h f' x₀ * ↑(proximal_gradient_method.L f h f' x₀) /
      ↑(proximal_gradient_method.L f h f' x₀) =
    proximal_gradient_method.t f h f' x₀

Tactic:
rw [← mul_div, div_self (by linarith [alg.hL]), mul_one]

Tactic state after:
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_23.{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),
        f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
          f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
            proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2) →
      ∀ (x : E), 0 ≤ ‖Gt x‖ ^ 2 := sorry

Tactic state before:
case bc.a0
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)
fieq1 :
  ∀ (x : E),
    f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
      f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
        proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2
x : E
⊢ 0 ≤ ‖Gt x‖ ^ 2

Tactic:
exact sq_nonneg _

Tactic state after:
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_26.{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),
        f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
          f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
            proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2) →
      (∀ (x : E),
          f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
            f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
              proximal_gradient_method.t f h f' x₀ / 2 * ‖Gt x‖ ^ 2) →
        ∀ (z : E), z ∈ univ := sorry

Tactic state before:
case a
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)
fieq1 :
  ∀ (x : E),
    f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
      f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
        proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2
fieq2 :
  ∀ (x : E),
    f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
      f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
        proximal_gradient_method.t f h f' x₀ / 2 * ‖Gt x‖ ^ 2
x z : E
⊢ z ∈ univ

Tactic:
simp

Tactic state after:
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_28.{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');
  (∀ (x : E),
      f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
        f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
          proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2) →
    (∀ (x : E),
        f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
          f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
            proximal_gradient_method.t f h f' x₀ / 2 * ‖Gt x‖ ^ 2) →
      (∀ (x z : E), f x + inner (f' x) (z - x) ≤ f z) →
        ∀ (x z : E),
          h z ≥
              h (x - proximal_gradient_method.t f h f' x₀ • Gt x) +
                inner (Gt x - f' x) (z - (x - proximal_gradient_method.t f h f' x₀ • Gt x)) →
            h (x - proximal_gradient_method.t f h f' x₀ • Gt x) +
                inner (Gt x - f' x) (z - (x - proximal_gradient_method.t f h f' x₀ • Gt x)) ≤
              h z := 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
fieq1 :
  ∀ (x : E),
    f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
      f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
        proximal_gradient_method.t f h f' x₀ ^ 2 * ↑(proximal_gradient_method.L f h f' x₀) / 2 * ‖Gt x‖ ^ 2
fieq2 :
  ∀ (x : E),
    f (x - proximal_gradient_method.t f h f' x₀ • Gt x) ≤
      f x - proximal_gradient_method.t f h f' x₀ * inner (f' x) (Gt x) +
        proximal_gradient_method.t f h f' x₀ / 2 * ‖Gt x‖ ^ 2
fieq3 : ∀ (x z : E), f x + inner (f' x) (z - x) ≤ f z
x z : E
hG :
  h z ≥
    h (x - proximal_gradient_method.t f h f' x₀ • Gt x) +
      inner (Gt x - f' x) (z - (x - proximal_gradient_method.t f h f' x₀ • Gt x))
⊢ h (x - proximal_gradient_method.t f h f' x₀ • Gt x) +
      inner (Gt x - f' x) (z - (x - proximal_gradient_method.t f h f' x₀ • Gt x)) ≤
    h z

Tactic:
apply hG

Tactic state after: