The Frobenius operator #
If R has characteristic p, then there is a ring endomorphism frobenius R p
that raises r : R to the power p.
By applying WittVector.map to frobenius R p, we obtain a ring endomorphism 𝕎 R →+* 𝕎 R.
It turns out that this endomorphism can be described by polynomials over ℤ
that do not depend on R or the fact that it has characteristic p.
In this way, we obtain a Frobenius endomorphism WittVector.frobeniusFun : 𝕎 R → 𝕎 R
for every commutative ring R.
Unfortunately, the aforementioned polynomials can not be obtained using the machinery
of wittStructureInt that was developed in StructurePolynomial.lean.
We therefore have to define the polynomials by hand, and check that they have the required property.
In case R has characteristic p, we show in frobenius_eq_map_frobenius
that WittVector.frobeniusFun is equal to WittVector.map (frobenius R p).
Main definitions and results #
frobeniusPoly: the polynomials that describe the coefficients offrobeniusFun;frobeniusFun: the Frobenius endomorphism on Witt vectors;frobeniusFun_isPoly: the tautological assertion that Frobenius is a polynomial function;frobenius_eq_map_frobenius: the fact that in characteristicp, Frobenius is equal toWittVector.map (frobenius R p).
TODO: Show that WittVector.frobeniusFun is a ring homomorphism,
and bundle it into WittVector.frobenius.
References #
[Hazewinkel, Witt Vectors][Haze09]
[Commelin and Lewis, Formalizing the Ring of Witt Vectors][CL21]
The rational polynomials that give the coefficients of frobenius x,
in terms of the coefficients of x.
These polynomials actually have integral coefficients,
see frobeniusPoly and map_frobeniusPoly.
Equations
- WittVector.frobeniusPolyRat p n = (MvPolynomial.bind₁ (wittPolynomial p ℚ ∘ fun (n : ℕ) => n + 1)) (xInTermsOfW p ℚ n)
Instances For
An auxiliary polynomial over the integers, that satisfies
p * (frobeniusPolyAux p n) + X n ^ p = frobeniusPoly p n.
This makes it easy to show that frobeniusPoly p n is congruent to X n ^ p
modulo p.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The polynomials that give the coefficients of frobenius x,
in terms of the coefficients of x.
Equations
- WittVector.frobeniusPoly p n = MvPolynomial.X n ^ p + MvPolynomial.C ↑p * WittVector.frobeniusPolyAux p n
Instances For
frobeniusFun is the function underlying the ring endomorphism
frobenius : 𝕎 R →+* frobenius 𝕎 R.
Equations
- x.frobeniusFun = WittVector.mk p fun (n : ℕ) => (MvPolynomial.aeval x.coeff) (WittVector.frobeniusPoly p n)
Instances For
frobeniusFun is tautologically a polynomial function.
See also frobenius_isPoly.
If R has characteristic p, then there is a ring endomorphism
that raises r : R to the power p.
By applying WittVector.map to this endomorphism,
we obtain a ring endomorphism frobenius R p : 𝕎 R →+* 𝕎 R.
The underlying function of this morphism is WittVector.frobeniusFun.
Equations
- WittVector.frobenius = { toFun := WittVector.frobeniusFun, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
WittVector.frobenius as an equiv.
Equations
- WittVector.frobeniusEquiv p R = { toFun := ⇑WittVector.frobenius, invFun := ⇑(WittVector.map ↑(frobeniusEquiv R p).symm), left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }