Theorem: Matrix.Represents.mul
File: Mathlib/LinearAlgebra/Matrix/Charpoly/LinearMap.lean

tactic: delta Matrix.Represents PiToModule.fromMatrix
state_before: ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_3
inst✝³ : AddCommGroup M
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
A A' : Matrix ι ι R
f f' : Module.End R M
h : Represents b A f
h' : Represents b A' f'
⊢ Represents b (A * A') (f * f')

tactic: rw [LinearMap.comp_apply, AlgEquiv.toLinearMap_apply, _root_.map_mul]
state_before: ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_3
inst✝³ : AddCommGroup M
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
A A' : Matrix ι ι R
f f' : Module.End R M
h : Represents b A f
h' : Represents b A' f'
⊢ ↑(LinearMap.comp (↑(LinearMap.llcomp R (ι → R) (ι → R) M) (↑(Fintype.total R R) b))
          (AlgEquiv.toLinearMap (AlgEquiv.symm algEquivMatrix')))
      (A * A') =
    ↑(PiToModule.fromEnd R b) (f * f')

tactic: ext
state_before: ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_3
inst✝³ : AddCommGroup M
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
A A' : Matrix ι ι R
f f' : Module.End R M
h : Represents b A f
h' : Represents b A' f'
⊢ ↑(↑(LinearMap.llcomp R (ι → R) (ι → R) M) (↑(Fintype.total R R) b))
      (↑(AlgEquiv.symm algEquivMatrix') A * ↑(AlgEquiv.symm algEquivMatrix') A') =
    ↑(PiToModule.fromEnd R b) (f * f')

tactic: dsimp [PiToModule.fromEnd]
state_before: case h.h
ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_3
inst✝³ : AddCommGroup M
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
A A' : Matrix ι ι R
f f' : Module.End R M
h : Represents b A f
h' : Represents b A' f'
i✝ : ι
⊢ ↑(LinearMap.comp
          (↑(↑(LinearMap.llcomp R (ι → R) (ι → R) M) (↑(Fintype.total R R) b))
            (↑(AlgEquiv.symm algEquivMatrix') A * ↑(AlgEquiv.symm algEquivMatrix') A'))
          (LinearMap.single i✝))
      1 =
    ↑(LinearMap.comp (↑(PiToModule.fromEnd R b) (f * f')) (LinearMap.single i✝)) 1

tactic: rw [← h'.congr_fun, ← h.congr_fun]
state_before: case h.h
ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_3
inst✝³ : AddCommGroup M
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
A A' : Matrix ι ι R
f f' : Module.End R M
h : Represents b A f
h' : Represents b A' f'
i✝ : ι
⊢ ↑(↑(Fintype.total R R) b)
      (↑(↑(AlgEquiv.symm algEquivMatrix') A) (↑(↑(AlgEquiv.symm algEquivMatrix') A') (Pi.single i✝ 1))) =
    ↑f (↑f' (↑(↑(Fintype.total R R) b) (Pi.single i✝ 1)))

tactic: rfl
state_before: case h.h
ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_3
inst✝³ : AddCommGroup M
R : Type u_2
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
A A' : Matrix ι ι R
f f' : Module.End R M
h : Represents b A f
h' : Represents b A' f'
i✝ : ι
⊢ ↑(↑(Fintype.total R R) b)
      (↑(↑(AlgEquiv.symm algEquivMatrix') A) (↑(↑(AlgEquiv.symm algEquivMatrix') A') (Pi.single i✝ 1))) =
    ↑(↑(Fintype.total R R) b) (mulVec A (mulVec A' (Pi.single i✝ 1)))