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
A key divisibility fact for the proof of WittVector.map_frobeniusPoly
.
frobeniusFun
is the function underlying the ring endomorphism
frobenius : 𝕎 R →+* frobenius 𝕎 R
.
Equations
- WittVector.frobeniusFun x = 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
- (_ : WittVector.IsPoly p fun (R : Type u_3) (_Rcr : CommRing R) => WittVector.frobeniusFun) = (_ : WittVector.IsPoly p fun (R : Type u_3) (_Rcr : CommRing R) => WittVector.frobeniusFun)
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
- One or more equations did not get rendered due to their size.
Instances For
frobenius
is tautologically a polynomial function.
Equations
- (_ : WittVector.IsPoly p fun (R : Type u_3) (_Rcr : CommRing R) => ⇑WittVector.frobenius) = (_ : WittVector.IsPoly p fun (R : Type u_3) (_Rcr : CommRing R) => WittVector.frobeniusFun)
WittVector.frobenius
as an equiv.
Equations
- One or more equations did not get rendered due to their size.