Polynomial module #
In this file, we define the polynomial module for an R-module M, i.e. the R[X]-module M[X].
This is defined as a type alias PolynomialModule R M := ℕ →₀ M, since there might be different
module structures on ℕ →₀ M of interest. See the docstring of PolynomialModule for details.
The R[X]-module M[X] for an R-module M.
This is isomorphic (as an R-module) to M[X] when M is a ring.
We require all the module instances Module S (PolynomialModule R M) to factor through R except
Module R[X] (PolynomialModule R M).
In this constraint, we have the following instances for example :
Racts onPolynomialModule R R[X]R[X]acts onPolynomialModule R R[X]asR[Y]acting onR[X][Y]Racts onPolynomialModule R[X] R[X]R[X]acts onPolynomialModule R[X] R[X]asR[X]acting onR[X][Y]R[X][X]acts onPolynomialModule R[X] R[X]asR[X][Y]acting on itself
This is also the reason why R is included in the alias, or else there will be two different
instances of Module R[X] (PolynomialModule R[X]).
See https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews/topic/.2315065.20polynomial.20modules for the full discussion.
- ofCoeff :: (
The coefficients
ℕ →₀ Mof an element of the additive monoid algebraM[X].- )
Instances For
PolynomialModule.coeff as an equiv.
Equations
- PolynomialModule.coeffEquiv R = { toFun := PolynomialModule.coeff, invFun := PolynomialModule.ofCoeff R, left_inv := ⋯, right_inv := ⋯ }
Instances For
Alias of the forward direction of PolynomialModule.coeff_inj.
Equations
- PolynomialModule.instInhabited = { default := (PolynomialModule.coeffEquiv R).symm.1 default }
Equations
- PolynomialModule.instUnique = { default := (PolynomialModule.coeffEquiv R).symm default, uniq := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
PolynomialModule.coeff as an AddEquiv.
Instances For
MonoidAlgebra.single n m for m : M, r : R is the element rm : PolynomialModule R M.
Equations
- PolynomialModule.single R n m = { coeff := Finsupp.single n m }
Instances For
Alias of PolynomialModule.coeff_single.
This is required to have the IsScalarTower S R M instance to avoid diamonds.
Equations
PolynomialModule.coeff as a linear equiv.
Equations
Instances For
PolynomialModule.single as a linear map.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
PolynomialModule R R is isomorphic to R[X] as an R[X] module.
Equations
- One or more equations did not get rendered due to their size.
Instances For
PolynomialModule R S is isomorphic to S[X] as an R module.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Two R-linear maps from PolynomialModule R M which are equal
after pre-composition with every lsingle R a are equal.
The image of a polynomial under a linear map.
Equations
Instances For
Evaluate a polynomial p : PolynomialModule R M at r : R.
Equations
- PolynomialModule.eval r = { toFun := fun (p : PolynomialModule R M) => p.coeff.sum fun (i : ℕ) (m : M) => r ^ i • m, map_add' := ⋯, map_smul' := ⋯ }
Instances For
comp p q is the composition of p : R[X] and q : M[X] as q(p(x)).
Equations
- PolynomialModule.comp p = ↑R (PolynomialModule.eval p) ∘ₗ PolynomialModule.map (Polynomial R) (PolynomialModule.lsingle R 0)