Weil Polynomials

The characteristic polynomial of the Frobenius on the etale cohomology is called a Weil polynomial. This section contains some auxiliary routines for simpler handling of these polynomials. All routines make frequently use of PowerSumToCoefficients, CoefficientsToElementarySymmetric and ElementarySymmetricToPowerSums. They were used in [EJ10] to study K3 surfaces.

SetVerbose("WeilPolynomials", v) : MonStgElt, RngIntElt ->
Set the verbose printing level for the analysis of weil polynomials. Maximal value 2.
HasAllRootsOnUnitCircle(f) : RngUPolElt -> BoolElt
Given a polynomial f with rational coefficients this routine checks that the complex roots of the polynomial are all of absolute value 1. The algorithm does not use floating point approximations.
FrobeniusTracesToWeilPolynomials(tr, q, i, deg) : SeqEnum, RngIntElt, RngIntElt, RngIntElt -> SeqEnum
    KnownFactor: RngUPolElt             Default: 1
    SetVerbose("WeilPolynomials", n):   Maximum: 2
Given the sequence of Frobenius traces on the i-th etale cohomology this function returns a list of possible characteristic polynomials. Here q is the order of the basefield and deg is the degree of the characteristic polynomial. In the case of even i the sign in the functional equation has to be determined. This is done by checking the absolute values of the roots of the hypothetical polynomials. In the case that this does not work both candidates are returned. In the case of contradictory data an empty sequence is returned.

If a factor of the characteristic polynomial is known it can be given as optional argument.

WeilPolynomialToRankBound(f, q) : RngUPolElt, RngIntElt -> RngIntElt
Given a polynomial f this routine counts the zeros (with multiplicity) of f that are q times a root of unity. This is an upper bound for the Picard rank of the corresponding algebraic surface; according to the Tate conjecture, it is precisely the Picard rank.
ArtinTateFormula(f, q, h20) : RngUPolElt, RngIntElt, RngIntElt -> RngIntElt, RngIntElt
Given a Weil polynomial corresponding to H2 of an algebraic surface with Hoge number h2, 0 this routine evaluates the Artin-Tate formula. If the Tate conjecture holds, the two values returned are the arithmetic Picard rank, and the absolute value of the discriminant of the Picard group times the order of the Brauer group of the surface.
WeilPolynomialOverFieldExtension(f, deg) : RngUPolElt, RngIntElt -> RngUPolElt
Given the characteristic polynomial f of the Frobenius on an etale cohomology group. This routine returns the characteristic polynomial of the deg times iterated Frobenius.
CheckWeilPolynomial(f, q, h20) : RngUPolElt, RngIntElt, RngIntElt -> BoolElt
    SurfDeg: RngIntElt                  Default: -1
Given a polynomial f this routine checks several conditions that must be satisfied by the characteristic polynomial of the Frobenius on H2 of an algebraic surface. Here q is the size of the basefield, h20 is the Hodge number h2, 0 and SurfDeg is the degree of the surface (-1 means degree unknown). For example, this routine can be used to determine the sign in the functional equation.

The routine checks the valuation of the roots at all places (including p and ∞). It also checks the functional equation and the Artin-Tate conditions (see [EJ10] for details).

Example GrdRng_weilpoly (H125E5)

> q1<t> := PolynomialRing(RationalField());
> z4<x,y,z,w> := PolynomialRing(IntegerRing(),4);
> f := x^4 + x^3*z + x^2*y^2 + x^2*y*w + x^2*z^2 + x^2*z*w +
>      x*y^3 + x*y*z*w + x*y*w^2 + x*z^2*w + y^3*w + y^2*z^2 +
>      y^2*z*w + y^2*w^2 + y*z^2*w + z^4 + z*w^3;
> Tr := [];
> for i := 1 to 10 do
>    P3 := ProjectiveSpace(GF(2^i),3);
>    S := Scheme(P3,f);
>    time
>    Tr[i] := #Points(S) - 1 - 2^(2*i);
> end for;
> cpl := FrobeniusTracesToWeilPolynomials(Tr, 2, 2, 22: KnownFactor := t-2);
> cpl;
[
    t^22 - t^21 - 2*t^20 - 4*t^19 + 16*t^17 + 32*t^16 - 64*t^15
         + 16384*t^7 - 32768*t^6 - 65536*t^5 + 262144*t^3
         + 524288*t^2 + 1048576*t - 4194304,
    t^22 - t^21 - 2*t^20 - 4*t^19 + 16*t^17 + 32*t^16 - 64*t^15
         - 16384*t^7 + 32768*t^6 + 65536*t^5 - 262144*t^3
         - 524288*t^2 - 1048576*t + 4194304
]

Here the sign in the functional equation can not be determined by the absolute values of roots test. Further point counting would be very slow, as the coefficients of t11, t10, t9, t8 are zero, thus point counting over (F)_(215) would be necessary to determine the sign in this way. Instead, we can try to use more invariants of the surface.

> cpl_2 := [wp : wp in cpl | CheckWeilPolynomial(wp,2,1: SurfDeg := 4)];
> cpl_2;
[
    t^22 - t^21 - 2*t^20 - 4*t^19 + 16*t^17 + 32*t^16 - 64*t^15
         + 16384*t^7 - 32768*t^6 - 65536*t^5 + 262144*t^3
         + 524288*t^2 + 1048576*t - 4194304
]
> WeilPolynomialToRankBound(cpl_2[1],2);
2
> ArtinTateFormula(cpl_2[1],2,1);
1 4
> ArtinTateFormula(WeilPolynomialOverFieldExtension(cpl_2[1],2),2^2,1);
2 68

Thus the minus sign in the functional equation is correct. The surface has arithmetic Picard rank 1 and relative to the Tate conjecture the geometric Picard group has rank 2 and discriminant either -17 or -68 (depending on the order of the Brauer group).

Example GrdRng_weilpoly2 (H125E6)

Advanced example: Bounding Picard rank with less point counting.

The computation is based on the same equation as the example above. Now we do not use the most costly Frobenius trace, but we assume additional cyclotomic factors.

> q1<t> := PolynomialRing(RationalField());
> Tr := [ 1, 5, 19, 33, 11, -55, 435, -31, -197]; /* First 9 Frob traces */
> cycl := [ Evaluate(CyclotomicPolynomial(i),t/2)*2^EulerPhi(i)
> : i in [1..100] | EulerPhi(i) lt 23];
> cycl[1] := cycl[1]^2;
> cycl[2] := cycl[2]^2; /* linear factors need multiplicity two */
> hyp := &cat [FrobeniusTracesToWeilPolynomials(Tr, 2, 2, 22 :
>                       KnownFactor := (t-2)*add) : add in cycl];
> hyp := SetToSequence(Set(hyp));
> hyp;
[
    t^22 - t^21 - 2*t^20 - 4*t^19 + 16*t^17 + 32*t^16 - 64*t^15
         - 16384*t^7 + 32768*t^6 + 65536*t^5 - 262144*t^3
         - 524288*t^2 - 1048576*t + 4194304
]

Using only the number of point over F2, ..., F29 we can prove that either the Picard rank is bounded by 2 or the correct Weil polynomial is in the list.

> CheckWeilPolynomial(hyp[1],2,1:SurfDeg := 4);
false
The invariants of the surface and the hypothetical Weil polynomial are contradictory. Thus the Picard rank is at most 2.
V2.28, 13 July 2023