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.
We also define, given an element a in an R-algebra A and an A-module M, an R[X]-module
Module.AEval R M a, which is a type synonym of M with the action of a polynomial f
given by f • m = Polynomial.aeval a f • m. In particular X • m = a • m.
In the special case that A = M →ₗ[R] M and φ : M →ₗ[R] M, the module Module.AEval R M a is
abbreviated Module.AEval' φ. In this module we have X • m = ↑φ m.
Suppose a is an element of an R-algebra A and M is an A-module.
Loosely speaking, Module.AEval R M a is the R[X]-module with elements m : M,
where the action of a polynomial $f$ is given by $f • m = f(a) • m$.
More precisely, Module.AEval R M a has elements Module.AEval.of R M a m for m : M,
and the action of f is f • (of R M a m) = of R M a ((aeval a f) • m).
Equations
- Module.AEval R M x = M
Instances For
Equations
Equations
Equations
Equations
- (_ : Module.Finite R (Module.AEval R M a)) = (_ : Module.Finite R M)
Equations
The canonical linear equivalence between M and Module.AEval R M a as an R-module.
Equations
- Module.AEval.of R M a = LinearEquiv.refl R M
Instances For
Equations
- (_ : IsScalarTower R (Polynomial R) (Module.AEval R M a)) = (_ : IsScalarTower R (Polynomial R) (Module.AEval R M a))
Equations
- (_ : Module.Finite (Polynomial R) (Module.AEval R M a)) = (_ : Module.Finite (Polynomial R) (Module.AEval R M a))
Given and R-module M and a linear map φ : M →ₗ[R] M, Module.AEval' φ is loosely speaking
the R[X]-module with elements m : M, where the action of a polynomial $f$ is given by
$f • m = f(a) • m$.
More precisely, Module.AEval' φ has elements Module.AEval'.of φ m for m : M,
and the action of f is f • (of φ m) = of φ ((aeval φ f) • m).
Module.AEval' is defined as a special case of Module.AEval in which the R-algebra is
M →ₗ[R] M. Lemmas involving Module.AEval may be applied to Module.AEval'.
Equations
- Module.AEval' φ = Module.AEval R M φ
Instances For
The canonical linear equivalence between M and Module.AEval' φ as an R-module,
where φ : M →ₗ[R] M.
Equations
- Module.AEval'.of φ = Module.AEval.of R M φ
Instances For
Equations
- (_ : Module.Finite (Polynomial R) (Module.AEval' φ)) = (_ : Module.Finite (Polynomial R) (Module.AEval' φ))
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.
Equations
- PolynomialModule R M = (ℕ →₀ M)
Instances For
Equations
- instInhabitedPolynomialModule R M = Finsupp.inhabited
Equations
- instAddCommGroupPolynomialModule R M = Finsupp.addCommGroup
This is required to have the IsScalarTower S R M instance to avoid diamonds.
Equations
- PolynomialModule.funLike R = Finsupp.funLike
Equations
- PolynomialModule.instCoeFunPolynomialModuleForAllNat R = Finsupp.coeFun
The monomial m * x ^ i. This is defeq to Finsupp.singleAddHom, and is redefined here
so that it has the desired type signature.
Equations
Instances For
PolynomialModule.single as a linear map.
Equations
Instances For
Equations
- PolynomialModule.polynomialModule = inferInstanceAs (Module (Polynomial R) (Module.AEval' (Finsupp.lmapDomain M R Nat.succ)))
Equations
- (_ : IsScalarTower S R (PolynomialModule R M)) = (_ : IsScalarTower S R (ℕ →₀ M))
Equations
- (_ : IsScalarTower S (Polynomial R) (PolynomialModule R M)) = (_ : IsScalarTower S (Polynomial R) (PolynomialModule R M))
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
The image of a polynomial under a linear map.
Equations
Instances For
Evaluate a polynomial p : PolynomialModule R M at r : R.
Equations
- One or more equations did not get rendered due to their size.
Instances For
comp p q is the composition of p : R[X] and q : M[X] as q(p(x)).
Equations
- PolynomialModule.comp p = LinearMap.comp (↑R (PolynomialModule.eval p)) (PolynomialModule.map (Polynomial R) (PolynomialModule.lsingle R 0))