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
.
Equations
- ⋯ = ⋯
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
frobenius
is tautologically a polynomial function.
Equations
- ⋯ = ⋯
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' := ⋯ }