Algebra isomorphism between matrices of polynomials and polynomials of matrices #
Given [CommRing R] [Ring A] [Algebra R A]
we show A[X] ≃ₐ[R] (A ⊗[R] R[X])
.
Combining this with the isomorphism Matrix n n A ≃ₐ[R] (A ⊗[R] Matrix n n R)
proved earlier
in RingTheory.MatrixAlgebra
, we obtain the algebra isomorphism
def matPolyEquiv :
Matrix n n R[X] ≃ₐ[R] (Matrix n n R)[X]
which is characterized by
coeff (matPolyEquiv m) k i j = coeff (m i j) k
We will use this algebra isomorphism to prove the Cayley-Hamilton theorem.
(Implementation detail).
The function underlying A ⊗[R] R[X] →ₐ[R] A[X]
,
as a bilinear function of two arguments.
Equations
- PolyEquivTensor.toFunBilinear R A = LinearMap.toSpanSingleton A (Polynomial R →ₗ[R] Polynomial A) (Polynomial.aeval Polynomial.X).toLinearMap
Instances For
(Implementation detail).
The function underlying A ⊗[R] R[X] →ₐ[R] A[X]
,
as a linear map.
Equations
Instances For
(Implementation detail).
The algebra homomorphism A ⊗[R] R[X] →ₐ[R] A[X]
.
Equations
Instances For
(Implementation detail.)
The bare function A[X] → A ⊗[R] R[X]
.
(We don't need to show that it's an algebra map, thankfully --- just that it's an inverse.)
Equations
Instances For
(Implementation detail)
The equivalence, ignoring the algebra structure, (A ⊗[R] R[X]) ≃ A[X]
.
Equations
- PolyEquivTensor.equiv R A = { toFun := ⇑(PolyEquivTensor.toFunAlgHom R A), invFun := PolyEquivTensor.invFun R A, left_inv := ⋯, right_inv := ⋯ }
Instances For
The R
-algebra isomorphism A[X] ≃ₐ[R] (A ⊗[R] R[X])
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The A
-algebra isomorphism A[X] ≃ₐ[A] A ⊗[R] R[X]
(when A
is commutative).
Equations
- polyEquivTensor' R A = { toEquiv := (polyEquivTensor R A).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
polyEquivTensor' R A
is the same as polyEquivTensor R A
as a function.
The algebra isomorphism stating "matrices of polynomials are the same as polynomials of matrices".
(You probably shouldn't attempt to use this underlying definition ---
it's an algebra equivalence, and characterised extensionally by the lemma
matPolyEquiv_coeff_apply
below.)
Equations
- matPolyEquiv = ((matrixEquivTensor R (Polynomial R) n).trans (Algebra.TensorProduct.comm R (Polynomial R) (Matrix n n R))).trans (polyEquivTensor R (Matrix n n R)).symm
Instances For
Extend a ring hom A → Mₙ(R)
to a ring hom A[X] → Mₙ(R[X])
.
Equations
- f.polyToMatrix = matPolyEquiv.symm.toRingEquiv.toRingHom.comp (Polynomial.mapRingHom f)