zzhisthebest/LeanBenchmark huggingface dataset:
import Mathlib
import Optlib


open Set InnerProductSpace Topology Filter InnerProduct

open scoped Pointwise

theorem extracted_formal_statement_10.{u_3, u_2, u_1} {E₁ : Type u_1} {E₂ : Type u_2} {F : Type u_3}
  [inst : NormedAddCommGroup E₁] [inst_1 : InnerProductSpace ℝ E₁] [inst_2 : FiniteDimensional ℝ E₁]
  [inst_3 : NormedAddCommGroup E₂] [inst_4 : InnerProductSpace ℝ E₂] [inst_5 : FiniteDimensional ℝ E₂]
  [inst_6 : NormedAddCommGroup F] [inst_7 : InnerProductSpace ℝ F] [inst_8 : FiniteDimensional ℝ F]
  {admm : ADMM E₁ E₂ F} {admm_kkt : Existance_of_kkt admm} [inst_9 : Setting E₁ E₂ F admm admm_kkt] (n : ℕ) :
  -ADMM.ρ E₁ E₂ F * ⟪(OptProblem.A₂ E₁) (ADMM.x₂ E₁ F (n + 1) - ADMM.x₂ E₁ F n), (OptProblem.A₂ E₁) (e₂ (n + 1))⟫_ℝ =
    ADMM.ρ E₁ E₂ F *
      ⟪(OptProblem.A₂ E₁) (ADMM.x₂ E₁ F n - ADMM.x₂ E₁ F (n + 1)), (OptProblem.A₂ E₁) (e₂ (n + 1))⟫_ℝ := sorry

Tactic state before:
E₁ : Type u_1
E₂ : Type u_2
F : Type u_3
inst✝⁹ : NormedAddCommGroup E₁
inst✝⁸ : InnerProductSpace ℝ E₁
inst✝⁷ : FiniteDimensional ℝ E₁
inst✝⁶ : NormedAddCommGroup E₂
inst✝⁵ : InnerProductSpace ℝ E₂
inst✝⁴ : FiniteDimensional ℝ E₂
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
inst✝¹ : FiniteDimensional ℝ F
admm : ADMM E₁ E₂ F
admm_kkt : Existance_of_kkt admm
inst✝ : Setting E₁ E₂ F admm admm_kkt
n : ℕ
⊢ -ADMM.ρ E₁ E₂ F * ⟪(OptProblem.A₂ E₁) (ADMM.x₂ E₁ F (n + 1) - ADMM.x₂ E₁ F n), (OptProblem.A₂ E₁) (e₂ (n + 1))⟫_ℝ =
    ADMM.ρ E₁ E₂ F * ⟪(OptProblem.A₂ E₁) (ADMM.x₂ E₁ F n - ADMM.x₂ E₁ F (n + 1)), (OptProblem.A₂ E₁) (e₂ (n + 1))⟫_ℝ

Tactic:
rw [neg_mul (ρ) (inner (A₂ (x₂ (n + 1) - x₂ n)) (A₂ (e₂ (n + 1))))]
    rw [← mul_neg]
    rw [← inner_neg_left (A₂ (x₂ (n + 1) - x₂ n)) (A₂ (e₂ (n + 1)))]
    rw [← map_neg A₂ (x₂ (n + 1) - x₂ n)]
    rw [neg_sub (x₂ (n + 1)) (x₂ n)]

Tactic state after:
import Mathlib
import Optlib


open Set InnerProductSpace Topology Filter InnerProduct

open scoped Pointwise

theorem extracted_formal_statement_14.{u_3, u_2, u_1} {E₁ : Type u_1} {E₂ : Type u_2} {F : Type u_3}
  [inst : NormedAddCommGroup E₁] [inst_1 : InnerProductSpace ℝ E₁] [inst_2 : FiniteDimensional ℝ E₁]
  [inst_3 : NormedAddCommGroup E₂] [inst_4 : InnerProductSpace ℝ E₂] [inst_5 : FiniteDimensional ℝ E₂]
  [inst_6 : NormedAddCommGroup F] [inst_7 : InnerProductSpace ℝ F] [inst_8 : FiniteDimensional ℝ F]
  {admm : ADMM E₁ E₂ F} {admm_kkt : Existance_of_kkt admm} [inst_9 : Setting E₁ E₂ F admm admm_kkt] (n : ℕ)
  (h_original_goal :
    (ADMM.τ E₁ E₂ F * ADMM.ρ E₁ E₂ F) •
        ((OptProblem.A₁ E₂) (ADMM.x₁ E₂ F (n + 1)) + (OptProblem.A₂ E₁) (ADMM.x₂ E₁ F (n + 1)) - OptProblem.b E₁ E₂) =
      ey (n + 1) - ey n) :
  ADMM.τ E₁ E₂ F ≠ 0 := sorry

Tactic state before:
E₁ : Type u_1
E₂ : Type u_2
F : Type u_3
inst✝⁹ : NormedAddCommGroup E₁
inst✝⁸ : InnerProductSpace ℝ E₁
inst✝⁷ : FiniteDimensional ℝ E₁
inst✝⁶ : NormedAddCommGroup E₂
inst✝⁵ : InnerProductSpace ℝ E₂
inst✝⁴ : FiniteDimensional ℝ E₂
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
inst✝¹ : FiniteDimensional ℝ F
admm : ADMM E₁ E₂ F
admm_kkt : Existance_of_kkt admm
inst✝ : Setting E₁ E₂ F admm admm_kkt
n : ℕ
⊢ (ADMM.τ E₁ E₂ F * ADMM.ρ E₁ E₂ F) •
      ((OptProblem.A₁ E₂) (ADMM.x₁ E₂ F (n + 1)) + (OptProblem.A₂ E₁) (ADMM.x₂ E₁ F (n + 1)) - OptProblem.b E₁ E₂) =
    ey (n + 1) - ey n

Tactic:
rw [Φ_isdescending_eq1, Φ_isdescending_eq2]
    simp only [one_div, mul_inv_rev]
    rw [smul_smul, mul_assoc]
    nth_rw 2 [← mul_assoc]
    rw [mul_inv_cancel₀, one_mul, mul_inv_cancel₀, one_smul]

Tactic state after:
[E₁ : Type u_1
 E₂ : Type u_2
 F : Type u_3
 inst✝⁹ : NormedAddCommGroup E₁
 inst✝⁸ : InnerProductSpace ℝ E₁
 inst✝⁷ : FiniteDimensional ℝ E₁
 inst✝⁶ : NormedAddCommGroup E₂
 inst✝⁵ : InnerProductSpace ℝ E₂
 inst✝⁴ : FiniteDimensional ℝ E₂
 inst✝³ : NormedAddCommGroup F
 inst✝² : InnerProductSpace ℝ F
 inst✝¹ : FiniteDimensional ℝ F
 admm : ADMM E₁ E₂ F
 admm_kkt : Existance_of_kkt admm
 inst✝ : Setting E₁ E₂ F admm admm_kkt
 n : ℕ
 ⊢ ADMM.τ E₁ E₂ F ≠ 0,
 E₁ : Type u_1
 E₂ : Type u_2
 F : Type u_3
 inst✝⁹ : NormedAddCommGroup E₁
 inst✝⁸ : InnerProductSpace ℝ E₁
 inst✝⁷ : FiniteDimensional ℝ E₁
 inst✝⁶ : NormedAddCommGroup E₂
 inst✝⁵ : InnerProductSpace ℝ E₂
 inst✝⁴ : FiniteDimensional ℝ E₂
 inst✝³ : NormedAddCommGroup F
 inst✝² : InnerProductSpace ℝ F
 inst✝¹ : FiniteDimensional ℝ F
 admm : ADMM E₁ E₂ F
 admm_kkt : Existance_of_kkt admm
 inst✝ : Setting E₁ E₂ F admm admm_kkt
 n : ℕ
 ⊢ ADMM.ρ E₁ E₂ F ≠ 0]
import Mathlib
import Optlib


open Set InnerProductSpace Topology Filter InnerProduct

open scoped Pointwise

theorem extracted_formal_statement_15.{u_3, u_2, u_1} {E₁ : Type u_1} {E₂ : Type u_2} {F : Type u_3}
  [inst : NormedAddCommGroup E₁] [inst_1 : InnerProductSpace ℝ E₁] [inst_2 : FiniteDimensional ℝ E₁]
  [inst_3 : NormedAddCommGroup E₂] [inst_4 : InnerProductSpace ℝ E₂] [inst_5 : FiniteDimensional ℝ E₂]
  [inst_6 : NormedAddCommGroup F] [inst_7 : InnerProductSpace ℝ F] [inst_8 : FiniteDimensional ℝ F]
  {admm : ADMM E₁ E₂ F} {admm_kkt : Existance_of_kkt admm} [inst_9 : Setting E₁ E₂ F admm admm_kkt] (n : ℕ)
  (h_original_goal :
    (ADMM.τ E₁ E₂ F * ADMM.ρ E₁ E₂ F) •
        ((OptProblem.A₁ E₂) (ADMM.x₁ E₂ F (n + 1)) + (OptProblem.A₂ E₁) (ADMM.x₂ E₁ F (n + 1)) - OptProblem.b E₁ E₂) =
      ey (n + 1) - ey n) :
  ADMM.ρ E₁ E₂ F ≠ 0 := sorry

Tactic state before:
E₁ : Type u_1
E₂ : Type u_2
F : Type u_3
inst✝⁹ : NormedAddCommGroup E₁
inst✝⁸ : InnerProductSpace ℝ E₁
inst✝⁷ : FiniteDimensional ℝ E₁
inst✝⁶ : NormedAddCommGroup E₂
inst✝⁵ : InnerProductSpace ℝ E₂
inst✝⁴ : FiniteDimensional ℝ E₂
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
inst✝¹ : FiniteDimensional ℝ F
admm : ADMM E₁ E₂ F
admm_kkt : Existance_of_kkt admm
inst✝ : Setting E₁ E₂ F admm admm_kkt
n : ℕ
⊢ (ADMM.τ E₁ E₂ F * ADMM.ρ E₁ E₂ F) •
      ((OptProblem.A₁ E₂) (ADMM.x₁ E₂ F (n + 1)) + (OptProblem.A₂ E₁) (ADMM.x₂ E₁ F (n + 1)) - OptProblem.b E₁ E₂) =
    ey (n + 1) - ey n

Tactic:
rw [Φ_isdescending_eq1, Φ_isdescending_eq2]
    simp only [one_div, mul_inv_rev]
    rw [smul_smul, mul_assoc]
    nth_rw 2 [← mul_assoc]
    rw [mul_inv_cancel₀, one_mul, mul_inv_cancel₀, one_smul]

Tactic state after:
[E₁ : Type u_1
 E₂ : Type u_2
 F : Type u_3
 inst✝⁹ : NormedAddCommGroup E₁
 inst✝⁸ : InnerProductSpace ℝ E₁
 inst✝⁷ : FiniteDimensional ℝ E₁
 inst✝⁶ : NormedAddCommGroup E₂
 inst✝⁵ : InnerProductSpace ℝ E₂
 inst✝⁴ : FiniteDimensional ℝ E₂
 inst✝³ : NormedAddCommGroup F
 inst✝² : InnerProductSpace ℝ F
 inst✝¹ : FiniteDimensional ℝ F
 admm : ADMM E₁ E₂ F
 admm_kkt : Existance_of_kkt admm
 inst✝ : Setting E₁ E₂ F admm admm_kkt
 n : ℕ
 ⊢ ADMM.τ E₁ E₂ F ≠ 0,
 E₁ : Type u_1
 E₂ : Type u_2
 F : Type u_3
 inst✝⁹ : NormedAddCommGroup E₁
 inst✝⁸ : InnerProductSpace ℝ E₁
 inst✝⁷ : FiniteDimensional ℝ E₁
 inst✝⁶ : NormedAddCommGroup E₂
 inst✝⁵ : InnerProductSpace ℝ E₂
 inst✝⁴ : FiniteDimensional ℝ E₂
 inst✝³ : NormedAddCommGroup F
 inst✝² : InnerProductSpace ℝ F
 inst✝¹ : FiniteDimensional ℝ F
 admm : ADMM E₁ E₂ F
 admm_kkt : Existance_of_kkt admm
 inst✝ : Setting E₁ E₂ F admm admm_kkt
 n : ℕ
 ⊢ ADMM.ρ E₁ E₂ F ≠ 0]
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_1.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {xm x₀ : E} {γ : ℕ+ → ℝ} {alg : Nesterov f f' γ x₀}
  (hfun : ConvexOn ℝ univ f) (hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1))
  (h2 :
    ∀ (k : ℕ+) (x' : E),
      f (Nesterov.x f f' γ x₀ ↑k) - f x' ≤
        ↑(Nesterov.l f f' γ x₀) *
            inner (Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k) (x' - Nesterov.x f f' γ x₀ ↑k) +
          ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k‖ ^ 2)
  (h3 :
    ∀ (k : ℕ+),
      f (Nesterov.x f f' γ x₀ ↑k) - f xm - (1 - γ k) * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) ≤
        ↑(Nesterov.l f f' γ x₀) *
            inner (Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k)
              ((1 - γ k) • Nesterov.x f f' γ x₀ (↑k - 1) + γ k • xm - Nesterov.x f f' γ x₀ ↑k) +
          ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k‖ ^ 2)
  (k : ℕ+) (hz : γ k ≥ 0) (hzs : γ k > 0) :
  ↑(Nesterov.l f f' γ x₀) / 2 *
      (γ k ^ 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2 - γ k ^ 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2) =
    ↑(Nesterov.l f f' γ x₀) / 2 *
      ((‖γ k‖ * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖) ^ 2 - (‖γ k‖ * ‖Nesterov.v f f' γ x₀ ↑k - xm‖) ^ 2) := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
f' : E → E
xm x₀ : E
γ : ℕ+ → ℝ
alg : Nesterov f f' γ x₀
hfun : ConvexOn ℝ univ f
hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1)
h2 :
  ∀ (k : ℕ+) (x' : E),
    f (Nesterov.x f f' γ x₀ ↑k) - f x' ≤
      ↑(Nesterov.l f f' γ x₀) *
          inner (Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k) (x' - Nesterov.x f f' γ x₀ ↑k) +
        ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k‖ ^ 2
h3 :
  ∀ (k : ℕ+),
    f (Nesterov.x f f' γ x₀ ↑k) - f xm - (1 - γ k) * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) ≤
      ↑(Nesterov.l f f' γ x₀) *
          inner (Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k)
            ((1 - γ k) • Nesterov.x f f' γ x₀ (↑k - 1) + γ k • xm - Nesterov.x f f' γ x₀ ↑k) +
        ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.x f f' γ x₀ ↑k - Nesterov.y f f' γ x₀ k‖ ^ 2
k : ℕ+
hz : γ k ≥ 0
hzs : γ k > 0
⊢ ↑(Nesterov.l f f' γ x₀) / 2 *
      (γ k ^ 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2 - γ k ^ 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2) =
    ↑(Nesterov.l f f' γ x₀) / 2 *
      ((‖γ k‖ * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖) ^ 2 - (‖γ k‖ * ‖Nesterov.v f f' γ x₀ ↑k - xm‖) ^ 2)

Tactic:
simp
    rw [abs_of_nonneg hz]
    ring_nf
    left
    simp

Tactic state after:
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_2.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {xm x₀ : E} {γ : ℕ+ → ℝ} {alg : Nesterov f f' γ x₀}
  (hfun : ConvexOn ℝ univ f) (hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1)) (min : IsMinOn f univ xm) (k : ℕ+)
  (h4 :
    f (Nesterov.x f f' γ x₀ ↑k) - f xm - (1 - γ k) * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) ≤
      ↑(Nesterov.l f f' γ x₀) * γ k ^ 2 / 2 *
        (‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2 - ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2))
  (con : (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2) : γ k ^ 2 > 0 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
f' : E → E
xm x₀ : E
γ : ℕ+ → ℝ
alg : Nesterov f f' γ x₀
hfun : ConvexOn ℝ univ f
hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1)
min : IsMinOn f univ xm
k : ℕ+
h4 :
  f (Nesterov.x f f' γ x₀ ↑k) - f xm - (1 - γ k) * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) ≤
    ↑(Nesterov.l f f' γ x₀) * γ k ^ 2 / 2 *
      (‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2 - ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2)
con : (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2
⊢ γ k ^ 2 > 0

Tactic:
rw [hg k]
    simp only [Real.rpow_two, div_pow, gt_iff_lt]
    apply div_pos (by linarith)
    apply sq_pos_of_ne_zero
    exact Nat.cast_add_one_ne_zero ↑k

Tactic state after:
import Mathlib
import Optlib


open Set

theorem extracted_formal_statement_3.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {xm x₀ : E} {γ : ℕ+ → ℝ} {alg : Nesterov f f' γ x₀}
  (hfun : ConvexOn ℝ univ f) (hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1)) (min : IsMinOn f univ xm) (k : ℕ+)
  (h4 :
    1 / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ ↑k) - f xm) -
        (1 - γ k) / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) ≤
      ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2 -
        ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2)
  (con : (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2) (this : γ k ^ 2 > 0)
  (h_original_goal :
    1 / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ ↑k) - f xm) +
        ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2 ≤
      1 / γ (k - 1) ^ 2 * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) +
        ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2) :
  (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f : E → ℝ
f' : E → E
xm x₀ : E
γ : ℕ+ → ℝ
alg : Nesterov f f' γ x₀
hfun : ConvexOn ℝ univ f
hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1)
min : IsMinOn f univ xm
k : ℕ+
h4 :
  1 / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ ↑k) - f xm) -
      (1 - γ k) / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) ≤
    ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2 -
      ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2
con : (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2
this : γ k ^ 2 > 0
⊢ 1 / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ ↑k) - f xm) +
      ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2 ≤
    1 / γ (k - 1) ^ 2 * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) +
      ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2

Tactic:
rw [tsub_le_iff_left, add_sub, le_sub_iff_add_le] at h4
    apply le_trans h4
    simp only [Real.rpow_two, ge_iff_le, add_le_add_iff_right, gt_iff_lt, sub_pos, sub_neg]
    have : f xm ≤ f (alg.x (k - 1)) := min (by trivial)
    apply mul_le_mul_of_nonneg_right _ (by linarith)

Tactic state after:
[E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f : E → ℝ
 f' : E → E
 xm x₀ : E
 γ : ℕ+ → ℝ
 alg : Nesterov f f' γ x₀
 hfun : ConvexOn ℝ univ f
 hg : ∀ (k : ℕ+), γ k = 2 / (↑↑k + 1)
 min : IsMinOn f univ xm
 k : ℕ+
 h4 :
   1 / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ ↑k) - f xm) +
       ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ ↑k - xm‖ ^ 2 ≤
     (1 - γ k) / γ k ^ 2 * (f (Nesterov.x f f' γ x₀ (↑k - 1)) - f xm) +
       ↑(Nesterov.l f f' γ x₀) / 2 * ‖Nesterov.v f f' γ x₀ (↑k - 1) - xm‖ ^ 2
 con : (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2
 this✝ : γ k ^ 2 > 0
 this : f xm ≤ f (Nesterov.x f f' γ x₀ (↑k - 1))
 ⊢ (1 - γ k) / γ k ^ 2 ≤ 1 / γ (k - 1) ^ 2]
import Mathlib
import Optlib


open Set Real

open Set Real PNat

theorem extracted_formal_statement_0.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f h : E → ℝ} {f' : E → E} {x0 : E} {alg : Nesterov_first f h f' x0} {xm : E}
  (minφ : IsMinOn (f + h) univ xm) (k : ℕ) :
  let update2 := Nesterov_first.update2 k;
  Nesterov_first.y f h f' x0 k - Nesterov_first.x f h f' x0 (k + 1) -
      Nesterov_first.t f h f' x0 k • f' (Nesterov_first.y f h f' x0 k) ∈
    SubderivAt (Nesterov_first.t f h f' x0 k • h) (Nesterov_first.x f h f' x0 (k + 1)) := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f h : E → ℝ
f' : E → E
x0 : E
alg : Nesterov_first f h f' x0
xm : E
minφ : IsMinOn (f + h) univ xm
k : ℕ
update2 : prox_prop (Nesterov_first.t f h f' x0 k • h)
  (Nesterov_first.y f h f' x0 k - Nesterov_first.t f h f' x0 k • f' (Nesterov_first.y f h f' x0 k))
  (Nesterov_first.x f h f' x0 (k + 1)) :=
  Nesterov_first.update2 k
⊢ Nesterov_first.y f h f' x0 k - Nesterov_first.x f h f' x0 (k + 1) -
      Nesterov_first.t f h f' x0 k • f' (Nesterov_first.y f h f' x0 k) ∈
    SubderivAt (Nesterov_first.t f h f' x0 k • h) (Nesterov_first.x f h f' x0 (k + 1))

Tactic:
rw [prox_iff_subderiv, sub_right_comm] at update2
    exact update2
    apply ConvexOn.smul
    linarith [alg.tbound k]
    exact alg.convh

Tactic state after:
import Mathlib
import Optlib


open Set Real

open Set Real PNat

theorem extracted_formal_statement_16.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f h : E → ℝ} {f' : E → E} {x0 : E} [p : Nesterov_first_fix_stepsize f h f' x0] (n : ℕ+)
  (h_original_goal :
    ↑↑n * (2 + ↑↑n) ^ 2 / ((2 + ↑↑n) * ↑(Nesterov_first_fix_stepsize.l f h f' x0) * 2 ^ 2) ≤
      (2 + (↑↑n - 1)) ^ 2 / (↑(Nesterov_first_fix_stepsize.l f h f' x0) * 2 ^ 2)) :
  0 < ↑(Nesterov_first_fix_stepsize.l f h f' x0) * 2 ^ 2 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f✝ h✝ : E → ℝ
f'✝ : E → E
x0✝ : E
f h : E → ℝ
f' : E → E
x0 : E
p : Nesterov_first_fix_stepsize f h f' x0
n : ℕ+
⊢ ↑↑n * (2 + ↑↑n) ^ 2 / ((2 + ↑↑n) * ↑(Nesterov_first_fix_stepsize.l f h f' x0) * 2 ^ 2) ≤
    (2 + (↑↑n - 1)) ^ 2 / (↑(Nesterov_first_fix_stepsize.l f h f' x0) * 2 ^ 2)

Tactic:
rw [mul_assoc, ← div_div, div_le_div_iff_of_pos_right, pow_two, ← mul_assoc, mul_div_assoc]
    rw [div_self]
    ring_nf
    simp
    linarith

Tactic state after:
[E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f✝ h✝ : E → ℝ
 f'✝ : E → E
 x0✝ : E
 f h : E → ℝ
 f' : E → E
 x0 : E
 p : Nesterov_first_fix_stepsize f h f' x0
 n : ℕ+
 ⊢ 0 < ↑(Nesterov_first_fix_stepsize.l f h f' x0) * 2 ^ 2]
import Mathlib
import Optlib


open Set Real

open Set Real PNat

theorem extracted_formal_statement_17.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f h : E → ℝ} {f' : E → E} {x0 : E} {alg : Nesterov_first_fix_stepsize f h f' x0} {xm : E}
  (minφ : IsMinOn (f + h) univ xm) (k : ℕ)
  (h_original_goal :
    Nesterov_first_fix_stepsize.γ f h f' x0 k ^ 2 / (2 * Nesterov_first_fix_stepsize.t f h f' x0 k) * ‖x0 - xm‖ ^ 2 ≤
      2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2) :
  2 * 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / 2 ≤ 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f h : E → ℝ
f' : E → E
x0 : E
alg : Nesterov_first_fix_stepsize f h f' x0
xm : E
minφ : IsMinOn (f + h) univ xm
k : ℕ
⊢ Nesterov_first_fix_stepsize.γ f h f' x0 k ^ 2 / (2 * Nesterov_first_fix_stepsize.t f h f' x0 k) * ‖x0 - xm‖ ^ 2 ≤
    2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2

Tactic:
apply mul_le_mul_of_nonneg_right
    rw [alg.γeq k, alg.teq k]
    field_simp
    rw [pow_two, add_comm]
    rw [mul_comm ((k + 2 : ℝ) ^ 2), ← div_div, div_le_div_iff_of_pos_right]

Tactic state after:
[case h
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 2 * 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / 2 ≤ 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0),
 case h
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 0 < (↑k + 2) ^ 2,
 case a0
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 0 ≤ ‖x0 - xm‖ ^ 2]
import Mathlib
import Optlib


open Set Real

open Set Real PNat

theorem extracted_formal_statement_18.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f h : E → ℝ} {f' : E → E} {x0 : E} {alg : Nesterov_first_fix_stepsize f h f' x0} {xm : E}
  (minφ : IsMinOn (f + h) univ xm) (k : ℕ)
  (h_original_goal :
    Nesterov_first_fix_stepsize.γ f h f' x0 k ^ 2 / (2 * Nesterov_first_fix_stepsize.t f h f' x0 k) * ‖x0 - xm‖ ^ 2 ≤
      2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2) :
  0 < (↑k + 2) ^ 2 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f h : E → ℝ
f' : E → E
x0 : E
alg : Nesterov_first_fix_stepsize f h f' x0
xm : E
minφ : IsMinOn (f + h) univ xm
k : ℕ
⊢ Nesterov_first_fix_stepsize.γ f h f' x0 k ^ 2 / (2 * Nesterov_first_fix_stepsize.t f h f' x0 k) * ‖x0 - xm‖ ^ 2 ≤
    2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2

Tactic:
apply mul_le_mul_of_nonneg_right
    rw [alg.γeq k, alg.teq k]
    field_simp
    rw [pow_two, add_comm]
    rw [mul_comm ((k + 2 : ℝ) ^ 2), ← div_div, div_le_div_iff_of_pos_right]

Tactic state after:
[case h
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 2 * 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / 2 ≤ 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0),
 case h
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 0 < (↑k + 2) ^ 2,
 case a0
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 0 ≤ ‖x0 - xm‖ ^ 2]
import Mathlib
import Optlib


open Set Real

open Set Real PNat

theorem extracted_formal_statement_19.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f h : E → ℝ} {f' : E → E} {x0 : E} {alg : Nesterov_first_fix_stepsize f h f' x0} {xm : E}
  (minφ : IsMinOn (f + h) univ xm) (k : ℕ)
  (h_original_goal :
    Nesterov_first_fix_stepsize.γ f h f' x0 k ^ 2 / (2 * Nesterov_first_fix_stepsize.t f h f' x0 k) * ‖x0 - xm‖ ^ 2 ≤
      2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2) :
  0 ≤ ‖x0 - xm‖ ^ 2 := sorry

Tactic state before:
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : CompleteSpace E
f h : E → ℝ
f' : E → E
x0 : E
alg : Nesterov_first_fix_stepsize f h f' x0
xm : E
minφ : IsMinOn (f + h) univ xm
k : ℕ
⊢ Nesterov_first_fix_stepsize.γ f h f' x0 k ^ 2 / (2 * Nesterov_first_fix_stepsize.t f h f' x0 k) * ‖x0 - xm‖ ^ 2 ≤
    2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / (↑k + 2) ^ 2 * ‖x0 - xm‖ ^ 2

Tactic:
apply mul_le_mul_of_nonneg_right
    rw [alg.γeq k, alg.teq k]
    field_simp
    rw [pow_two, add_comm]
    rw [mul_comm ((k + 2 : ℝ) ^ 2), ← div_div, div_le_div_iff_of_pos_right]

Tactic state after:
[case h
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 2 * 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0) / 2 ≤ 2 * ↑(Nesterov_first_fix_stepsize.l f h f' x0),
 case h
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 0 < (↑k + 2) ^ 2,
 case a0
 E : Type u_1
 inst✝² : NormedAddCommGroup E
 inst✝¹ : InnerProductSpace ℝ E
 inst✝ : CompleteSpace E
 f h : E → ℝ
 f' : E → E
 x0 : E
 alg : Nesterov_first_fix_stepsize f h f' x0
 xm : E
 minφ : IsMinOn (f + h) univ xm
 k : ℕ
 ⊢ 0 ≤ ‖x0 - xm‖ ^ 2]