Theorem: LinearMap.polyCharpoly_baseChange
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹³ : CommRing R
inst✝¹² : AddCommGroup L
inst✝¹¹ : Module R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁸ : Fintype ι
inst✝⁷ : Fintype ι'
inst✝⁶ : Fintype ιM
inst✝⁵ : DecidableEq ι
inst✝⁴ : DecidableEq ι'
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
b : Basis ι R L
A : Type u_8
inst✝¹ : CommRing A
inst✝ : Algebra R A
⊢ (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpoly (basis A b) =
    Polynomial.map (MvPolynomial.map (algebraMap R A)) (φ.polyCharpoly b)
state_after: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹³ : CommRing R
inst✝¹² : AddCommGroup L
inst✝¹¹ : Module R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁸ : Fintype ι
inst✝⁷ : Fintype ι'
inst✝⁶ : Fintype ιM
inst✝⁵ : DecidableEq ι
inst✝⁴ : DecidableEq ι'
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
b : Basis ι R L
A : Type u_8
inst✝¹ : CommRing A
inst✝ : Algebra R A
⊢ (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpolyAux (basis A b)
      (Module.Free.chooseBasis A (TensorProduct R A M)) =
    Polynomial.map (MvPolynomial.map (algebraMap R A)) (φ.polyCharpolyAux b (Module.Free.chooseBasis R M))
tactic: unfold polyCharpoly
state_before: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹³ : CommRing R
inst✝¹² : AddCommGroup L
inst✝¹¹ : Module R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁸ : Fintype ι
inst✝⁷ : Fintype ι'
inst✝⁶ : Fintype ιM
inst✝⁵ : DecidableEq ι
inst✝⁴ : DecidableEq ι'
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
b : Basis ι R L
A : Type u_8
inst✝¹ : CommRing A
inst✝ : Algebra R A
⊢ (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpolyAux (basis A b)
      (Module.Free.chooseBasis A (TensorProduct R A M)) =
    Polynomial.map (MvPolynomial.map (algebraMap R A)) (φ.polyCharpolyAux b (Module.Free.chooseBasis R M))
state_after: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹³ : CommRing R
inst✝¹² : AddCommGroup L
inst✝¹¹ : Module R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁸ : Fintype ι
inst✝⁷ : Fintype ι'
inst✝⁶ : Fintype ιM
inst✝⁵ : DecidableEq ι
inst✝⁴ : DecidableEq ι'
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
b : Basis ι R L
A : Type u_8
inst✝¹ : CommRing A
inst✝ : Algebra R A
⊢ (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpolyAux (basis A b)
      (Module.Free.chooseBasis A (TensorProduct R A M)) =
    (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpolyAux (basis A b) (basis A (Module.Free.chooseBasis R M))
tactic: rw [← φ.polyCharpolyAux_baseChange]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹³ : CommRing R
inst✝¹² : AddCommGroup L
inst✝¹¹ : Module R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁸ : Fintype ι
inst✝⁷ : Fintype ι'
inst✝⁶ : Fintype ιM
inst✝⁵ : DecidableEq ι
inst✝⁴ : DecidableEq ι'
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
b : Basis ι R L
A : Type u_8
inst✝¹ : CommRing A
inst✝ : Algebra R A
⊢ (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpolyAux (basis A b)
      (Module.Free.chooseBasis A (TensorProduct R A M)) =
    (tensorProduct R A M M ∘ₗ baseChange A φ).polyCharpolyAux (basis A b) (basis A (Module.Free.chooseBasis R M))
state_after: no goals
tactic: apply polyCharpolyAux_basisIndep