zzhisthebest/LeanBenchmark huggingface dataset:
import Mathlib
import Optlib


open Filter Topology Set InnerProductSpace Finset

open Finset

theorem extracted_formal_statement_8.{u_1} {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : 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) (x₁ : ℝ)
  (hx₁ : |x₁| < ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)) (x₂ : ℝ)
  (hx₂ : dist x₂ x₁ < (ε / (2 * ↑(subgradient_method.G f x₀) ^ 2) - |x₁|) / 2) :
  (ε / (2 * ↑(subgradient_method.G f x₀) ^ 2) + |x₁|) / 2 <
    (ε / (2 * ↑(subgradient_method.G f x₀) ^ 2) + ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)) / 2 := sorry

Tactic state before:
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
x₁ : ℝ
hx₁ : |x₁| < ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)
x₂ : ℝ
hx₂ : dist x₂ x₁ < (ε / (2 * ↑(subgradient_method.G f x₀) ^ 2) - |x₁|) / 2
⊢ (ε / (2 * ↑(subgradient_method.G f x₀) ^ 2) + |x₁|) / 2 <
    (ε / (2 * ↑(subgradient_method.G f x₀) ^ 2) + ε / (2 * ↑(subgradient_method.G f x₀) ^ 2)) / 2

Tactic:
apply (mul_lt_mul_left zero_lt_two).mp
    rw [mul_div_cancel₀, mul_div_cancel₀]
    simp [hx₁]
    simp
    simp

Tactic state after:
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_0 {m : ℕ+} (x : EuclideanSpace ℝ (Fin ↑m)) (h_original_goal : ‖x‖ ^ 2 = x ⬝ᵥ x) :
  0 ≤ ∑ i, ‖x i‖ ^ 2 := sorry

Tactic state before:
m : ℕ+
x : EuclideanSpace ℝ (Fin ↑m)
⊢ ‖x‖ ^ 2 = x ⬝ᵥ x

Tactic:
rw [EuclideanSpace.norm_eq, Real.sq_sqrt, dotProduct]
    rw [Finset.sum_congr]
    simp
    intro z _
    simp

Tactic state after:
[case a
 m : ℕ+
 x : EuclideanSpace ℝ (Fin ↑m)
 z : Fin ↑m
 a✝ : z ∈ Finset.univ
 ⊢ x z ^ 2 = x z * x z,
 m : ℕ+
 x : EuclideanSpace ℝ (Fin ↑m)
 ⊢ 0 ≤ ∑ i, ‖x i‖ ^ 2]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_1 {n m : ℕ+} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ} (hA : ¬A = 0)
  (x : EuclideanSpace ℝ (Fin ↑n)) (ε : ℝ) (εpos : ε > 0) :
  let normA := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖;
  (∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖) →
    0 < normA →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ‖x - y‖ ≤ ε / normA ^ 2 →
          ‖A *ᵥ y ⬝ᵥ A *ᵥ y - A *ᵥ x ⬝ᵥ A *ᵥ x - inner (2 • Aᵀ *ᵥ A *ᵥ x) (y - x)‖ ≤ ε * ‖x - y‖ →
            |A *ᵥ y ⬝ᵥ A *ᵥ y - A *ᵥ x ⬝ᵥ A *ᵥ x - 2 * (fun x_1 => y x_1 - x x_1) ⬝ᵥ (Aᵀ * A) *ᵥ x| ≤
              ε * ‖x - y‖ := sorry

Tactic state before:
case h.right
n m : ℕ+
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
hA : ¬A = 0
x : EuclideanSpace ℝ (Fin ↑n)
ε : ℝ
εpos : ε > 0
normA : ℝ := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖
norm_mul : ∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖
normApos : 0 < normA
y : EuclideanSpace ℝ (Fin ↑n)
ydist : ‖x - y‖ ≤ ε / normA ^ 2
⊢ ‖A *ᵥ y ⬝ᵥ A *ᵥ y - A *ᵥ x ⬝ᵥ A *ᵥ x - inner (2 • Aᵀ *ᵥ A *ᵥ x) (y - x)‖ ≤ ε * ‖x - y‖

Tactic:
rw [inner_smul_left]
    simp
    rw [← dotProduct]
    have aux1 : (fun x_1 ↦ ((Aᵀ * A) *ᵥ x) x_1) ⬝ᵥ (fun x_1 ↦ y x_1 - x x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x) := by
  rw [dotProduct, dotProduct]; simp [mul_comm]
    rw [dotProduct_comm] at aux1

Tactic state after:
[case h.right
 n m : ℕ+
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 hA : ¬A = 0
 x : EuclideanSpace ℝ (Fin ↑n)
 ε : ℝ
 εpos : ε > 0
 normA : ℝ := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖
 norm_mul : ∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖
 normApos : 0 < normA
 y : EuclideanSpace ℝ (Fin ↑n)
 ydist : ‖x - y‖ ≤ ε / normA ^ 2
 aux1 : ((fun x_1 => y x_1 - x x_1) ⬝ᵥ fun x_1 => ((Aᵀ * A) *ᵥ x) x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x)
 ⊢ |A *ᵥ y ⬝ᵥ A *ᵥ y - A *ᵥ x ⬝ᵥ A *ᵥ x - 2 * (fun x_1 => y x_1 - x x_1) ⬝ᵥ (Aᵀ * A) *ᵥ x| ≤ ε * ‖x - y‖]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_2 {n m : ℕ+} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ} (hA : ¬A = 0)
  (x : EuclideanSpace ℝ (Fin ↑n)) (ε : ℝ) (εpos : ε > 0) :
  let normA := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖;
  (∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖) →
    0 < normA →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ‖x - y‖ ≤ ε / normA ^ 2 →
          ((fun x_1 => y x_1 - x x_1) ⬝ᵥ fun x_1 => ((Aᵀ * A) *ᵥ x) x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x) →
            |A *ᵥ y ⬝ᵥ A *ᵥ y - A *ᵥ x ⬝ᵥ A *ᵥ x - 2 * (fun x_1 => y x_1 - x x_1) ⬝ᵥ (Aᵀ * A) *ᵥ x| ≤ ε * ‖x - y‖ →
              ‖A *ᵥ y - A *ᵥ x‖ ^ 2 ≤ ε * ‖x - y‖ := sorry

Tactic state before:
case h.right
n m : ℕ+
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
hA : ¬A = 0
x : EuclideanSpace ℝ (Fin ↑n)
ε : ℝ
εpos : ε > 0
normA : ℝ := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖
norm_mul : ∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖
normApos : 0 < normA
y : EuclideanSpace ℝ (Fin ↑n)
ydist : ‖x - y‖ ≤ ε / normA ^ 2
aux1 : ((fun x_1 => y x_1 - x x_1) ⬝ᵥ fun x_1 => ((Aᵀ * A) *ᵥ x) x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x)
⊢ |A *ᵥ y ⬝ᵥ A *ᵥ y - A *ᵥ x ⬝ᵥ A *ᵥ x - 2 * (fun x_1 => y x_1 - x x_1) ⬝ᵥ (Aᵀ * A) *ᵥ x| ≤ ε * ‖x - y‖

Tactic:
rw [aux1, ← mulVec_mulVec, ← dot_mul_eq_transpose_mul_dot _ (y - x), Matrix.mulVec_sub, dotProduct_sub]
    ring_nf
    have aux2 (u v : Fin m → ℝ) : u ⬝ᵥ u + (v ⬝ᵥ v - v ⬝ᵥ u * 2) = (u - v) ⬝ᵥ (u - v) :=
  by
  rw [dotProduct_sub, sub_dotProduct, sub_dotProduct, ← sub_add, sub_sub, dotProduct_comm u v]
  rw [← mul_two, add_comm_sub]
    rw [aux2, ← norm2eq_dot]
    simp

Tactic state after:
[case h.right
 n m : ℕ+
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 hA : ¬A = 0
 x : EuclideanSpace ℝ (Fin ↑n)
 ε : ℝ
 εpos : ε > 0
 normA : ℝ := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖
 norm_mul : ∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖
 normApos : 0 < normA
 y : EuclideanSpace ℝ (Fin ↑n)
 ydist : ‖x - y‖ ≤ ε / normA ^ 2
 aux1 : ((fun x_1 => y x_1 - x x_1) ⬝ᵥ fun x_1 => ((Aᵀ * A) *ᵥ x) x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x)
 aux2 : ∀ (u v : Fin ↑m → ℝ), u ⬝ᵥ u + (v ⬝ᵥ v - v ⬝ᵥ u * 2) = (u - v) ⬝ᵥ (u - v)
 ⊢ ‖A *ᵥ y - A *ᵥ x‖ ^ 2 ≤ ε * ‖x - y‖]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_3 {n m : ℕ+} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ} (hA : ¬A = 0)
  (x : EuclideanSpace ℝ (Fin ↑n)) (ε : ℝ) (εpos : ε > 0) :
  let normA := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖;
  (∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖) →
    0 < normA →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ‖x - y‖ ≤ ε / normA ^ 2 →
          ((fun x_1 => y x_1 - x x_1) ⬝ᵥ fun x_1 => ((Aᵀ * A) *ᵥ x) x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x) →
            (∀ (u v : Fin ↑m → ℝ), u ⬝ᵥ u + (v ⬝ᵥ v - v ⬝ᵥ u * 2) = (u - v) ⬝ᵥ (u - v)) →
              (normA * ‖x - y‖) ^ 2 ≤ ε * ‖x - y‖ := sorry

Tactic state before:
n m : ℕ+
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
hA : ¬A = 0
x : EuclideanSpace ℝ (Fin ↑n)
ε : ℝ
εpos : ε > 0
normA : ℝ := ‖(toEuclideanLin ≪≫ₗ LinearMap.toContinuousLinearMap) A‖
norm_mul : ∀ (x : EuclideanSpace ℝ (Fin ↑n)), ‖A *ᵥ x‖ ≤ normA * ‖x‖
normApos : 0 < normA
y : EuclideanSpace ℝ (Fin ↑n)
ydist : ‖x - y‖ ≤ ε / normA ^ 2
aux1 : ((fun x_1 => y x_1 - x x_1) ⬝ᵥ fun x_1 => ((Aᵀ * A) *ᵥ x) x_1) = (Aᵀ * A) *ᵥ x ⬝ᵥ (y - x)
aux2 : ∀ (u v : Fin ↑m → ℝ), u ⬝ᵥ u + (v ⬝ᵥ v - v ⬝ᵥ u * 2) = (u - v) ⬝ᵥ (u - v)
⊢ (normA * ‖x - y‖) ^ 2 ≤ ε * ‖x - y‖

Tactic:
rw [pow_two, ← mul_assoc]
    apply mul_le_mul_of_nonneg_right
    rw [mul_rotate, mul_assoc, ← pow_two]
    calc
  ‖x - y‖ * normA ^ 2 ≤ ε / normA ^ 2 * normA ^ 2 := mul_le_mul_of_nonneg_right ydist (sq_nonneg normA)
  _ = ε := by field_simp
    apply norm_nonneg

Tactic state after:
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_4 {n m : ℕ+} {b : Fin ↑m → ℝ} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ}
  (x : EuclideanSpace ℝ (Fin ↑n)) (ε : ℝ) (εpos : ε > 0) (y : EuclideanSpace ℝ (Fin ↑n)) (a : ‖x - y‖ ≤ ε)
  (h_original_goal : ‖b ⬝ᵥ A *ᵥ y - b ⬝ᵥ A *ᵥ x - inner (Aᵀ *ᵥ b) (y - x)‖ ≤ ε * ‖x - y‖) : 0 ≤ ε := sorry

Tactic state before:
case right
n m : ℕ+
b : Fin ↑m → ℝ
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
x : EuclideanSpace ℝ (Fin ↑n)
ε : ℝ
εpos : ε > 0
y : EuclideanSpace ℝ (Fin ↑n)
a✝ : ‖x - y‖ ≤ ε
⊢ ‖b ⬝ᵥ A *ᵥ y - b ⬝ᵥ A *ᵥ x - inner (Aᵀ *ᵥ b) (y - x)‖ ≤ ε * ‖x - y‖

Tactic:
rw [dot_mul_eq_transpose_mul_dot, dot_mul_eq_transpose_mul_dot, ← dotProduct_sub]
    rw [EuclideanSpace.inner_eq_star_dotProduct]
    simp
    repeat rw [dotProduct]; simp [mul_comm]
    apply mul_nonneg

Tactic state after:
[case right.ha
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 x : EuclideanSpace ℝ (Fin ↑n)
 ε : ℝ
 εpos : ε > 0
 y : EuclideanSpace ℝ (Fin ↑n)
 a✝ : ‖x - y‖ ≤ ε
 ⊢ 0 ≤ ε,
 case right.hb
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 x : EuclideanSpace ℝ (Fin ↑n)
 ε : ℝ
 εpos : ε > 0
 y : EuclideanSpace ℝ (Fin ↑n)
 a✝ : ‖x - y‖ ≤ ε
 ⊢ 0 ≤ ‖x - y‖]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_5 {n m : ℕ+} {b : Fin ↑m → ℝ} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ}
  (x : EuclideanSpace ℝ (Fin ↑n)) (ε : ℝ) (εpos : ε > 0) (y : EuclideanSpace ℝ (Fin ↑n)) (a : ‖x - y‖ ≤ ε)
  (h_original_goal : ‖b ⬝ᵥ A *ᵥ y - b ⬝ᵥ A *ᵥ x - inner (Aᵀ *ᵥ b) (y - x)‖ ≤ ε * ‖x - y‖) : 0 ≤ ‖x - y‖ := sorry

Tactic state before:
case right
n m : ℕ+
b : Fin ↑m → ℝ
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
x : EuclideanSpace ℝ (Fin ↑n)
ε : ℝ
εpos : ε > 0
y : EuclideanSpace ℝ (Fin ↑n)
a✝ : ‖x - y‖ ≤ ε
⊢ ‖b ⬝ᵥ A *ᵥ y - b ⬝ᵥ A *ᵥ x - inner (Aᵀ *ᵥ b) (y - x)‖ ≤ ε * ‖x - y‖

Tactic:
rw [dot_mul_eq_transpose_mul_dot, dot_mul_eq_transpose_mul_dot, ← dotProduct_sub]
    rw [EuclideanSpace.inner_eq_star_dotProduct]
    simp
    repeat rw [dotProduct]; simp [mul_comm]
    apply mul_nonneg

Tactic state after:
[case right.ha
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 x : EuclideanSpace ℝ (Fin ↑n)
 ε : ℝ
 εpos : ε > 0
 y : EuclideanSpace ℝ (Fin ↑n)
 a✝ : ‖x - y‖ ≤ ε
 ⊢ 0 ≤ ε,
 case right.hb
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 x : EuclideanSpace ℝ (Fin ↑n)
 ε : ℝ
 εpos : ε > 0
 y : EuclideanSpace ℝ (Fin ↑n)
 a✝ : ‖x - y‖ ≤ ε
 ⊢ 0 ≤ ‖x - y‖]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_6 {n : ℕ+} {t μ : ℝ} {h : EuclideanSpace ℝ (Fin ↑n) → ℝ}
  (lasso : h = fun y => μ • ∑ i, ‖y i‖) (x xm : EuclideanSpace ℝ (Fin ↑n)) (tpos : 0 < t) (μpos : 0 < μ)
  (minpoint : ∀ (i : Fin ↑n), xm i = sign (x i) * ((|x i| - t * μ) ⊔ 0)) :
  let g := (t * μ) • fun x => ∑ i, ‖x i‖;
  g = t • h →
    prox_prop (t • h) x xm →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)), ∑ i, ‖y i‖ ≥ ∑ i, ‖xm i‖ + inner ((1 / (t * μ)) • (x - xm)) (y - xm) := sorry

Tactic state before:
n : ℕ+
t μ : ℝ
h : EuclideanSpace ℝ (Fin ↑n) → ℝ
lasso : h = fun y => μ • ∑ i, ‖y i‖
x xm : EuclideanSpace ℝ (Fin ↑n)
tpos : 0 < t
μpos : 0 < μ
minpoint : ∀ (i : Fin ↑n), xm i = sign (x i) * ((|x i| - t * μ) ⊔ 0)
g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
geqth : g = t • h
⊢ prox_prop (t • h) x xm

Tactic:
rw [← geqth]
    show prox_prop ((t * μ) • (fun (x : EuclideanSpace ℝ (Fin n)) => ‖x‖₁)) x xm
    have tμpos : 0 < t * μ := by apply mul_pos; linarith [tpos]; linarith [μpos]
    rw [prox_iff_subderiv_smul (fun x : (EuclideanSpace ℝ (Fin n)) => ‖x‖₁) norm_one_convex tμpos]
    rw [← mem_SubderivAt, HasSubgradientAt]

Tactic state after:
[n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 minpoint : ∀ (i : Fin ↑n), xm i = sign (x i) * ((|x i| - t * μ) ⊔ 0)
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 ⊢ ∀ (y : EuclideanSpace ℝ (Fin ↑n)), ∑ i, ‖y i‖ ≥ ∑ i, ‖xm i‖ + inner ((1 / (t * μ)) • (x - xm)) (y - xm)]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_7 {n : ℕ+} {t μ : ℝ} {h : EuclideanSpace ℝ (Fin ↑n) → ℝ}
  (lasso : h = fun y => μ • ∑ i, ‖y i‖) (x xm : EuclideanSpace ℝ (Fin ↑n)) (tpos : 0 < t) (μpos : 0 < μ) :
  let g := (t * μ) • fun x => ∑ i, ‖x i‖;
  g = t • h →
    0 < t * μ →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ∀ i ∈ Finset.univ,
          let abs_subg := SubderivAt_abs (xm i);
          xm i = 0 →
            x i = 0 ∨ |x i| ≤ t * μ → |x i| ≤ t * μ → y i * (μ⁻¹ * t⁻¹ * x i) ≤ μ⁻¹ * t⁻¹ * |x i * y i| → 0 < t := sorry

Tactic state before:
n : ℕ+
t μ : ℝ
h : EuclideanSpace ℝ (Fin ↑n) → ℝ
lasso : h = fun y => μ • ∑ i, ‖y i‖
x xm : EuclideanSpace ℝ (Fin ↑n)
tpos : 0 < t
μpos : 0 < μ
g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
geqth : g = t • h
tμpos : 0 < t * μ
y : EuclideanSpace ℝ (Fin ↑n)
i : Fin ↑n
a✝ : i ∈ Finset.univ
abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
hxm : xm i = 0
minpoint : x i = 0 ∨ |x i| ≤ t * μ
aux : |x i| ≤ t * μ
⊢ y i * (μ⁻¹ * t⁻¹ * x i) ≤ μ⁻¹ * t⁻¹ * |x i * y i|

Tactic:
rw [mul_comm, mul_assoc _ (x i), mul_le_mul_left]
    apply le_abs_self
    rw [← mul_inv, inv_pos]
    apply mul_pos
    linarith [μpos]

Tactic state after:
[case hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 < t]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_8 {n : ℕ+} {t μ : ℝ} {h : EuclideanSpace ℝ (Fin ↑n) → ℝ}
  (lasso : h = fun y => μ • ∑ i, ‖y i‖) (x xm : EuclideanSpace ℝ (Fin ↑n)) (tpos : 0 < t) (μpos : 0 < μ) :
  let g := (t * μ) • fun x => ∑ i, ‖x i‖;
  g = t • h →
    0 < t * μ →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ∀ i ∈ Finset.univ,
          let abs_subg := SubderivAt_abs (xm i);
          xm i = 0 →
            x i = 0 ∨ |x i| ≤ t * μ →
              |x i| ≤ t * μ → μ⁻¹ * t⁻¹ * |x i * y i| ≤ |y i| * μ⁻¹ * t⁻¹ * t * μ → 0 ≤ |y i| := sorry

Tactic state before:
n : ℕ+
t μ : ℝ
h : EuclideanSpace ℝ (Fin ↑n) → ℝ
lasso : h = fun y => μ • ∑ i, ‖y i‖
x xm : EuclideanSpace ℝ (Fin ↑n)
tpos : 0 < t
μpos : 0 < μ
g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
geqth : g = t • h
tμpos : 0 < t * μ
y : EuclideanSpace ℝ (Fin ↑n)
i : Fin ↑n
a✝ : i ∈ Finset.univ
abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
hxm : xm i = 0
minpoint : x i = 0 ∨ |x i| ≤ t * μ
aux : |x i| ≤ t * μ
⊢ μ⁻¹ * t⁻¹ * |x i * y i| ≤ |y i| * μ⁻¹ * t⁻¹ * t * μ

Tactic:
rw [abs_mul, ← mul_assoc, mul_comm, ← mul_assoc, ← mul_assoc, mul_assoc _ t]
    apply mul_le_mul_of_nonneg_left
    exact aux
    apply mul_nonneg
    apply mul_nonneg

Tactic state after:
[case a0.ha.ha
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ |y i|,
 case a0.ha.hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ μ⁻¹,
 case a0.hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ t⁻¹]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_9 {n : ℕ+} {t μ : ℝ} {h : EuclideanSpace ℝ (Fin ↑n) → ℝ}
  (lasso : h = fun y => μ • ∑ i, ‖y i‖) (x xm : EuclideanSpace ℝ (Fin ↑n)) (tpos : 0 < t) (μpos : 0 < μ) :
  let g := (t * μ) • fun x => ∑ i, ‖x i‖;
  g = t • h →
    0 < t * μ →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ∀ i ∈ Finset.univ,
          let abs_subg := SubderivAt_abs (xm i);
          xm i = 0 →
            x i = 0 ∨ |x i| ≤ t * μ →
              |x i| ≤ t * μ → μ⁻¹ * t⁻¹ * |x i * y i| ≤ |y i| * μ⁻¹ * t⁻¹ * t * μ → 0 ≤ μ⁻¹ := sorry

Tactic state before:
n : ℕ+
t μ : ℝ
h : EuclideanSpace ℝ (Fin ↑n) → ℝ
lasso : h = fun y => μ • ∑ i, ‖y i‖
x xm : EuclideanSpace ℝ (Fin ↑n)
tpos : 0 < t
μpos : 0 < μ
g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
geqth : g = t • h
tμpos : 0 < t * μ
y : EuclideanSpace ℝ (Fin ↑n)
i : Fin ↑n
a✝ : i ∈ Finset.univ
abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
hxm : xm i = 0
minpoint : x i = 0 ∨ |x i| ≤ t * μ
aux : |x i| ≤ t * μ
⊢ μ⁻¹ * t⁻¹ * |x i * y i| ≤ |y i| * μ⁻¹ * t⁻¹ * t * μ

Tactic:
rw [abs_mul, ← mul_assoc, mul_comm, ← mul_assoc, ← mul_assoc, mul_assoc _ t]
    apply mul_le_mul_of_nonneg_left
    exact aux
    apply mul_nonneg
    apply mul_nonneg

Tactic state after:
[case a0.ha.ha
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ |y i|,
 case a0.ha.hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ μ⁻¹,
 case a0.hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ t⁻¹]
import Mathlib
import Optlib


open Set Real Matrix Finset

open Set Real Matrix Finset NNReal

theorem extracted_formal_statement_10 {n : ℕ+} {t μ : ℝ} {h : EuclideanSpace ℝ (Fin ↑n) → ℝ}
  (lasso : h = fun y => μ • ∑ i, ‖y i‖) (x xm : EuclideanSpace ℝ (Fin ↑n)) (tpos : 0 < t) (μpos : 0 < μ) :
  let g := (t * μ) • fun x => ∑ i, ‖x i‖;
  g = t • h →
    0 < t * μ →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ∀ i ∈ Finset.univ,
          let abs_subg := SubderivAt_abs (xm i);
          xm i = 0 →
            x i = 0 ∨ |x i| ≤ t * μ →
              |x i| ≤ t * μ → μ⁻¹ * t⁻¹ * |x i * y i| ≤ |y i| * μ⁻¹ * t⁻¹ * t * μ → 0 ≤ t⁻¹ := sorry

Tactic state before:
n : ℕ+
t μ : ℝ
h : EuclideanSpace ℝ (Fin ↑n) → ℝ
lasso : h = fun y => μ • ∑ i, ‖y i‖
x xm : EuclideanSpace ℝ (Fin ↑n)
tpos : 0 < t
μpos : 0 < μ
g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
geqth : g = t • h
tμpos : 0 < t * μ
y : EuclideanSpace ℝ (Fin ↑n)
i : Fin ↑n
a✝ : i ∈ Finset.univ
abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
hxm : xm i = 0
minpoint : x i = 0 ∨ |x i| ≤ t * μ
aux : |x i| ≤ t * μ
⊢ μ⁻¹ * t⁻¹ * |x i * y i| ≤ |y i| * μ⁻¹ * t⁻¹ * t * μ

Tactic:
rw [abs_mul, ← mul_assoc, mul_comm, ← mul_assoc, ← mul_assoc, mul_assoc _ t]
    apply mul_le_mul_of_nonneg_left
    exact aux
    apply mul_nonneg
    apply mul_nonneg

Tactic state after:
[case a0.ha.ha
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ |y i|,
 case a0.ha.hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ μ⁻¹,
 case a0.hb
 n : ℕ+
 t μ : ℝ
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ
 lasso : h = fun y => μ • ∑ i, ‖y i‖
 x xm : EuclideanSpace ℝ (Fin ↑n)
 tpos : 0 < t
 μpos : 0 < μ
 g : EuclideanSpace ℝ (Fin ↑n) → ℝ := (t * μ) • fun x => ∑ i, ‖x i‖
 geqth : g = t • h
 tμpos : 0 < t * μ
 y : EuclideanSpace ℝ (Fin ↑n)
 i : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : SubderivAt abs (xm i) = if xm i = 0 then Set.Icc (-1) 1 else {sign (xm i)} := SubderivAt_abs (xm i)
 hxm : xm i = 0
 minpoint : x i = 0 ∨ |x i| ≤ t * μ
 aux : |x i| ≤ t * μ
 ⊢ 0 ≤ t⁻¹]