Polynomial laws on modules #
Let M and N be a modules over a commutative ring R.
A polynomial law f : PolynomialLaw R M N, with notation f : M →ₚₗₗ[R] N,
is a “law” that assigns a natural map PolynomialLaw.toFun' f S : S ⊗[R] M → S ⊗[R] N
for every R-algebra S.
For type theoretic reasons, if R : Type u, then the definition of the polynomial map f
is restricted to R-algebras S such that S : Type u.
Using the fact that a module is the direct limit of its finitely generated submodules, that a
finitely generated subalgebra is a quotient of a polynomial ring in the universe u, plus
the commutation of tensor products with direct limits, we will extend the functor
to all R-algebras (TODO).
Main definitions/lemmas #
Instance :
Module R (M →ₚₗ[R] N)shows that polynomial laws form aR-module.PolynomialLaw.ground fis the mapM → Ncorresponding toPolynomialLaw.toFun' f Runder the isomorphismsR ⊗[R] M ≃ₗ[R] M, and similarly forN.
In further works, we construct the coefficients of a polynomial law and show the relation with
polynomials (when the module M is free and finite).
Implementation notes #
In the literature, the theory is written for commutative rings, but this implementation
only assumes R is a commutative semiring.
References #
A polynomial law M →ₚₗ[R] N between R-modules is a functorial family of maps
S ⊗[R] M → S ⊗[R] N, for all R-algebras S.
For universe reasons, S has to be restricted to the same universe as R.
The functions
S ⊗[R] M → S ⊗[R] Nunderlying a polynomial law- isCompat' {S : Type u} [CommSemiring S] [Algebra R S] {S' : Type u} [CommSemiring S'] [Algebra R S'] (φ : S →ₐ[R] S') : ⇑(LinearMap.rTensor N φ.toLinearMap) ∘ self.toFun' S = self.toFun' S' ∘ ⇑(LinearMap.rTensor M φ.toLinearMap)
The compatibility relations between the functions underlying a polynomial law
Instances For
M →ₚₗ[R] N is the type of R-polynomial laws from M to N.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- PolynomialLaw.instZero = { zero := { toFun' := fun (x : Type ?u.42) [CommSemiring x] [Algebra R x] => 0, isCompat' := ⋯ } }
Equations
- PolynomialLaw.instInhabited = { default := Zero.zero }
The identity as a polynomial law
Equations
- PolynomialLaw.id = { toFun' := fun (S : Type ?u.26) (x : CommSemiring S) (x_1 : Algebra R S) => id, isCompat' := ⋯ }
Instances For
The sum of two polynomial laws
Equations
Instances For
Equations
- PolynomialLaw.instAdd = { add := PolynomialLaw.add }
External multiplication of a f : M →ₚₗ[R] N by r : R
Equations
- PolynomialLaw.smul r f = { toFun' := fun (S : Type ?u.48) (x : CommSemiring S) (x_1 : Algebra R S) => r • f.toFun' S, isCompat' := ⋯ }
Instances For
Equations
- PolynomialLaw.instSMul = { smul := PolynomialLaw.smul }
Equations
- PolynomialLaw.instMulAction = { toSMul := PolynomialLaw.instSMul, one_smul := ⋯, mul_smul := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- PolynomialLaw.instModule = { toMulAction := PolynomialLaw.instMulAction, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
The opposite of a polynomial law
Equations
Instances For
Equations
- PolynomialLaw.instNeg = { neg := PolynomialLaw.neg }
Equations
- One or more equations did not get rendered due to their size.
The map M → N associated with a f : M →ₚₗ[R] N (essentially, f.toFun' R)
Equations
- f.ground = ⇑(TensorProduct.lid R N) ∘ f.toFun' R ∘ ⇑(TensorProduct.lid R M).symm
Instances For
Equations
The map ground assigning a function M → N to a polynomial map f : M →ₚₗ[R] N as a
linear map.
Equations
- PolynomialLaw.lground = { toFun := PolynomialLaw.ground, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Composition of polynomial maps.