-- File: optlib/Optlib/Algorithm/LASSO.lean
Theorem statement:
theorem extracted_formal_statement_41 {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‖) :
  ‖Aᵀ *ᵥ b ⬝ᵥ (y - x) - inner (Aᵀ *ᵥ b) (y - x)‖ ≤ ε * ‖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]

Tactic state after:
[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‖ ≤ ε
 ⊢ ‖Aᵀ *ᵥ b ⬝ᵥ (y - x) - inner (Aᵀ *ᵥ b) (y - x)‖ ≤ ε * ‖x - y‖]

Premises used:
dotProduct_sub : ∀ {m : Type u_2} {α : Type v} [inst : Fintype m] [inst_1 : NonUnitalNonAssocRing α] (u v w : m → α),
  u ⬝ᵥ (v - w) = u ⬝ᵥ v - u ⬝ᵥ w
dot_mul_eq_transpose_mul_dot : ∀ {n m : ℕ+} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ} (u : EuclideanSpace ℝ (Fin ↑m))
  (v : EuclideanSpace ℝ (Fin ↑n)), u ⬝ᵥ A *ᵥ v = Aᵀ *ᵥ u ⬝ᵥ v