Theorem: Matrix.toLin_mul
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: apply (LinearMap.toMatrix v₁ v₃).injective
state_before: R : Type u_3
inst✝¹¹ : CommSemiring R
l : Type u_1
m : Type u_2
n : Type u_4
inst✝¹⁰ : Fintype n
inst✝⁹ : Fintype m
inst✝⁸ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_7
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_6
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
v₃ : Basis l R M₃
inst✝¹ : Fintype l
inst✝ : DecidableEq m
A : Matrix l m R
B : Matrix m n R
⊢ ↑(toLin v₁ v₃) (A ⬝ B) = comp (↑(toLin v₂ v₃) A) (↑(toLin v₁ v₂) B)

tactic: haveI : DecidableEq l := fun _ _ => Classical.propDecidable _
state_before: case a
R : Type u_3
inst✝¹¹ : CommSemiring R
l : Type u_1
m : Type u_2
n : Type u_4
inst✝¹⁰ : Fintype n
inst✝⁹ : Fintype m
inst✝⁸ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_7
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_6
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
v₃ : Basis l R M₃
inst✝¹ : Fintype l
inst✝ : DecidableEq m
A : Matrix l m R
B : Matrix m n R
⊢ ↑(toMatrix v₁ v₃) (↑(toLin v₁ v₃) (A ⬝ B)) = ↑(toMatrix v₁ v₃) (comp (↑(toLin v₂ v₃) A) (↑(toLin v₁ v₂) B))

tactic: rw [LinearMap.toMatrix_comp v₁ v₂ v₃]
state_before: case a
R : Type u_3
inst✝¹¹ : CommSemiring R
l : Type u_1
m : Type u_2
n : Type u_4
inst✝¹⁰ : Fintype n
inst✝⁹ : Fintype m
inst✝⁸ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_7
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_6
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
v₃ : Basis l R M₃
inst✝¹ : Fintype l
inst✝ : DecidableEq m
A : Matrix l m R
B : Matrix m n R
this : DecidableEq l
⊢ ↑(toMatrix v₁ v₃) (↑(toLin v₁ v₃) (A ⬝ B)) = ↑(toMatrix v₁ v₃) (comp (↑(toLin v₂ v₃) A) (↑(toLin v₁ v₂) B))

tactic: repeat' rw [LinearMap.toMatrix_toLin]
state_before: case a
R : Type u_3
inst✝¹¹ : CommSemiring R
l : Type u_1
m : Type u_2
n : Type u_4
inst✝¹⁰ : Fintype n
inst✝⁹ : Fintype m
inst✝⁸ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_7
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_6
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
v₃ : Basis l R M₃
inst✝¹ : Fintype l
inst✝ : DecidableEq m
A : Matrix l m R
B : Matrix m n R
this : DecidableEq l
⊢ ↑(toMatrix v₁ v₃) (↑(toLin v₁ v₃) (A ⬝ B)) =
    ↑(toMatrix v₂ v₃) (↑(toLin v₂ v₃) A) ⬝ ↑(toMatrix v₁ v₂) (↑(toLin v₁ v₂) B)

tactic: rw [LinearMap.toMatrix_toLin]
state_before: case a
R : Type u_3
inst✝¹¹ : CommSemiring R
l : Type u_1
m : Type u_2
n : Type u_4
inst✝¹⁰ : Fintype n
inst✝⁹ : Fintype m
inst✝⁸ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_7
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_6
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
v₃ : Basis l R M₃
inst✝¹ : Fintype l
inst✝ : DecidableEq m
A : Matrix l m R
B : Matrix m n R
this : DecidableEq l
⊢ A ⬝ B = A ⬝ ↑(toMatrix v₁ v₂) (↑(toLin v₁ v₂) B)