-- File: optlib/Optlib/Algorithm/LASSO.lean
Theorem statement:
theorem extracted_formal_statement_0 {n m : ℕ+} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ} (u : EuclideanSpace ℝ (Fin ↑m))
  (v : EuclideanSpace ℝ (Fin ↑n)) : Aᵀ *ᵥ u ⬝ᵥ v = u ⬝ᵥ A *ᵥ v := sorry

Tactic state before:
n m : ℕ+
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
u : EuclideanSpace ℝ (Fin ↑m)
v : EuclideanSpace ℝ (Fin ↑n)
⊢ Aᵀ *ᵥ u ⬝ᵥ v = u ⬝ᵥ A *ᵥ v

Tactic: rw [← vecMul_transpose, transpose_transpose, dotProduct_mulVec]

Tactic state after:

Premises used:
Matrix.dotProduct_mulVec : ∀ {m : Type u_2} {n : Type u_3} {R : Type u_7} [inst : Fintype n] [inst_1 : Fintype m]
  [inst_2 : NonUnitalSemiring R] (v : m → R) (A : Matrix m n R) (w : n → R), v ⬝ᵥ A *ᵥ w = v ᵥ* A ⬝ᵥ w
Matrix.vecMul_transpose : ∀ {m : Type u_2} {n : Type u_3} {α : Type v} [inst : NonUnitalCommSemiring α]
  [inst_1 : Fintype n] (A : Matrix m n α) (x : n → α), x ᵥ* Aᵀ = A *ᵥ x
Matrix.transpose_transpose : ∀ {m : Type u_2} {n : Type u_3} {α : Type v} (M : Matrix m n α), Mᵀᵀ = M