Theorem: Matrix.matPolyEquiv_symm_map_eval
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: suffices ((aeval r).mapMatrix.comp matPolyEquiv.symm.toAlgHom : (Matrix n n R)[X] →ₐ[R] _) =
    (eval₂AlgHom' (AlgHom.id R _) (scalar n r)
      fun x => (scalar_commute _ (Commute.all _) _).symm) from
  DFunLike.congr_fun this M
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ (matPolyEquiv.symm M).map (eval r) = eval ((scalar n) r) M
state_after: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ (aeval r).mapMatrix.comp ↑matPolyEquiv.symm = eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯

tactic: ext : 1
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ (aeval r).mapMatrix.comp ↑matPolyEquiv.symm = eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯
state_after: case hC
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ ((aeval r).mapMatrix.comp ↑matPolyEquiv.symm).comp CAlgHom =
    (eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯).comp CAlgHom

case hX
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ ((aeval r).mapMatrix.comp ↑matPolyEquiv.symm) X = (eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯) X

tactic: ext M : 1
state_before: case hC
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ ((aeval r).mapMatrix.comp ↑matPolyEquiv.symm).comp CAlgHom =
    (eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯).comp CAlgHom
state_after: case hC.H
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝¹ : Matrix n n R
M✝ : (Matrix n n R)[X]
r : R
M : Matrix n n R
⊢ (((aeval r).mapMatrix.comp ↑matPolyEquiv.symm).comp CAlgHom) M =
    ((eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯).comp CAlgHom) M

tactic: simp [Function.comp]
state_before: case hC.H
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝¹ : Matrix n n R
M✝ : (Matrix n n R)[X]
r : R
M : Matrix n n R
⊢ (((aeval r).mapMatrix.comp ↑matPolyEquiv.symm).comp CAlgHom) M =
    ((eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯).comp CAlgHom) M
state_after: no goals

tactic: simp [smul_eq_diagonal_mul]
state_before: case hX
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : (Matrix n n R)[X]
r : R
⊢ ((aeval r).mapMatrix.comp ↑matPolyEquiv.symm) X = (eval₂AlgHom' (AlgHom.id R (Matrix n n R)) ((scalar n) r) ⋯) X
state_after: no goals