-- File: optlib/Optlib/Algorithm/LASSO.lean
Theorem statement:
theorem extracted_formal_statement_121 {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 →
    0 < t * μ →
      ∀ (y : EuclideanSpace ℝ (Fin ↑n)),
        ∀ i ∈ Finset.univ,
          let abs_subg := SubderivAt_abs (xm i);
          ¬xm i = 0 →
            |xm i| + (y i - xm i) * (μ⁻¹ * t⁻¹ * (x i - xm i)) ≤ |y i| →
              ¬(xm i = 0 ∧ SubderivAt abs (xm i) = Set.Icc (-1) 1) := sorry

Tactic state before:
case neg
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 : 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
⊢ |xm i| + (y i - xm i) * (μ⁻¹ * t⁻¹ * (x i - xm i)) ≤ |y i|

Tactic: rw [eq_ite_iff, or_iff_right] at abs_subg

Tactic state after:
[case neg
 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 : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : ¬xm i = 0 ∧ SubderivAt abs (xm i) = {sign (xm i)}
 hxm : ¬xm i = 0
 ⊢ |xm i| + (y i - xm i) * (μ⁻¹ * t⁻¹ * (x i - xm i)) ≤ |y i|,
 case neg
 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 : Fin ↑n
 a✝ : i ∈ Finset.univ
 abs_subg : xm i = 0 ∧ SubderivAt abs (xm i) = Set.Icc (-1) 1 ∨ ¬xm i = 0 ∧ SubderivAt abs (xm i) = {sign (xm i)}
 hxm : ¬xm i = 0
 ⊢ ¬(xm i = 0 ∧ SubderivAt abs (xm i) = Set.Icc (-1) 1)]

Premises used:
eq_ite_iff : ∀ {α : Sort u_1} {P : Prop} [inst : Decidable P] {a b c : α},
  (a = if P then b else c) ↔ P ∧ a = b ∨ ¬P ∧ a = c
or_iff_right : ∀ {a b : Prop}, ¬a → (a ∨ b ↔ b)