Jacobi Motive Examples

Example HypGeomMot_jacobi-motive-first-example (H135E14)

Here are some simple examples of Jacobi motives. The first involves the Fermat cubic, and various twists.

> J := JacobiMotive([2/3,2/3],[1/3]); // CM elliptic curve conductor 27
> Weight(J);
1
> Field(J);
Number Field with defining polynomial y^2 - y + 1 over Q
> P := PrimesInInterval(11,100);
> E := EllipticCurve("27a");
> &and[EulerFactor(J,p) eq EulerFactor(E,p) : p in P];
true
> K := KummerTwist(J, 2, 1/3); // twist by 2^(1/3)
> Et := EllipticCurve("108a");
> &and[EulerFactor(K,p) eq EulerFactor(Et,p) : p in P];
true
> K4 := KummerTwist(J, 4, 1/3); // twist by 4^(1/3)
> E36 := EllipticCurve("36a");
> &and[EulerFactor(K4,p) eq EulerFactor(E36,p) : p in P];
true
> K2 := KummerTwist(J, -2, 1/2); // quadratic twist by -2
> Q := QuadraticTwist(E,-2);
> &and[EulerFactor(K2,p) eq EulerFactor(Q,p) : p in P];
true

Example HypGeomMot_jacobi-motive7 (H135E15)

The next example is related to the Klein quartic and the elliptic curves of conductor 49.

> J := JacobiMotive([1/7,2/7,4/7]);
> Scale(J,2) eq J; // scaling by 2 or 4 gives same motive
true
> Field(J);
Number Field with defining polynomial y^2 - y + 2 over the Rational Field
> Weight(J);
3
> EffectiveWeight(J);
1
> T := TateTwist(J,1); // this twist is weight 1
> Weight(T);
1
> P := PrimesInInterval(11,100);
> E := EllipticCurve("49a");
> &and[EulerFactor(T,p) eq EulerFactor(E,p) : p in P];
true
> Grossencharacter(J);
Grossencharacter of type [[ 1, 2 ]] for Hecke-Dirichlet pair (1,$.1)
with modulus of norm 7 over Number Field y^2 - y + 2
> TateTwist($1,1);
Grossencharacter of type [[ 0, 1 ]] for Hecke-Dirichlet pair (1,$.1)
with modulus of norm 7 over Number Field y^2 - y + 2

Example HypGeomMot_jacobi-arith (H135E16)

We next give an example with some tensor arithmetic.

> J := JacobiMotive([1/3,1/3,1/3]); // weight 3, effective wt 1
> J;
Jacobi motive given by 3*[1/3]
> Grossencharacter(J);
Grossencharacter of type [[ 1, 2 ]] for Hecke-Dirichlet pair
(1,$.1*$.2^2) with modulus of norm 9 over Number Field y^2 - y + 1
> J^3;
Jacobi motive given by 9*[1/3]
> Grossencharacter(J^3); // norm 3
Grossencharacter of type [[ 3, 6 ]] for Hecke-Dirichlet pair
(1,$.1) with modulus of norm 3 over Number Field y^2 - y + 1
> Grossencharacter(J^6); // norm 1
Grossencharacter of type [[ 6, 12 ]] for Hecke-Dirichlet pair
(1,1) with modulus of norm 1 over Number Field y^2 - y + 1
> A := JacobiMotive([2/3,2/3],[1/3]);
> J*A; // one of the 1/3 cancels
Jacobi motive given by 2*[1/3]+2*[2/3]
> Grossencharacter(J*A); // trivial character
Tate twist by -2 of Hecke character 1 in Group of Hecke characters
of modulus of norm 1 over Number Field y - 1
> K := KummerTwist(J*A, 3, 1/3); K;
Jacobi motive given by 2*[1/3]+2*[2/3] with Kummer twisting
parameters (t,rho)=(3,1/3)
> Grossencharacter(K); // bad reduction at 3
Grossencharacter of type [[ 2, 2 ]] for Hecke-Dirichlet pair (1,1)
with modulus of norm 81 over Number Field y^2 - y + 1
> K2 := KummerTwist(JacobiMotive([]),3,1/3); K2;
Unital Jacobi motive with Kummer twisting parameters (t,rho)=(3,1/3)
> Grossencharacter(K2); // twist of the above
Grossencharacter of type [[ 0, 0 ]] for Hecke-Dirichlet pair
(1,$.1^2) with modulus of norm 81 over Number Field y^2 - y + 1
> K/K2 eq J*A; // removing the Kummer twist from K, gives J*A
true

Example HypGeomMot_jacobi-same-overQ (H135E17)

Here is an example with motives that are the same over (Q), but not over (Q)(Sqrt( - 3)). One of the Grössencharacters is seen to agree with the Jacobi motive at prime ideals.

> J := JacketMotive([], [], 2, 1/3, 0); J; // twist by 2^(1/3)
Unital Jacobi motive with Kummer twisting parameters (t,rho)=(2,1/3)
> GR := Grossencharacter(J); GR;
Grossencharacter of type [[ 0, 0 ]] for Hecke-Dirichlet pair (1,$.1)
with modulus of norm 36 over Number Field y^2 - y + 1
> ef := func<G,p | EulerFactor(G,p : Integral)>;
> P := PrimesUpTo(100);
> &and[ef(GR,p) eq ef(GR2,p) where GR2:=GR^2 : p in P]; // same over Q
true
> p7 := Ideal(Decomposition(Field(J),7)[1][1]); // norm 7, degree 1
> GR(p7);
-0.499999999999999999999999999998 - 0.866025403784438646763723170754*i
> (GR^2)(p7);
-0.500000000000000000000000000001 + 0.866025403784438646763723170752*i
> ComplexEvaluation(J,p7); // same as GR, not GR^2
-0.499999999999999999999999999998 - 0.866025403784438646763723170754*i
> PK := [p : p in PrimesUpTo(100,Field(J)) | Norm(p) ne 3];
> Max([Norm(GR(p)-ComplexEvaluation(J,p)) : p in PK | Degree(p) eq 1]);
1.01121993374575362499804556062E-59

Similarly, as John Voight indicates, one does not always have a unique Grossencharacter that is identifiable from degree 1 primes.

> J := JacobiMotive([3/4,1/8,5/8],[1/2]); // scaling by 5
> psi := Grossencharacter(J); psi;
WARNING: Didn't get unique kernel (size 2)
Grossencharacter of type [[ 1, 1 ]] with norm 64 over x^2 + 1
> G := HeckeCharacterGroup(64*Integers(J`K));
> TG := TargetRestriction(G,CyclotomicField(1));
> P := [p : p in PrimesUpTo(1000) | p mod 8 eq 5];
> A := [EulerFactor(psi,p : Integral) : p in P];
> tw := psi*TG.2;
> B := [EulerFactor(tw,p : Integral) : p in P];
> assert A eq B; // same L-function over Q
> // but they are different over primes that are 5 mod 8
> (TG.2)(Factorization(5*Integers(J`K))[1][1]);
-1

The point here is that only primes that are 5 mod 8 can distinguish this Grossencharacter, and Magma can not use these in ComplexEvaluation.

Example HypGeomMot_jacobi-relation-to-hypergeom (H135E18)

Jacobi motives also can be used to determine the tame prime information for a hypergeometric motive. It is easiest to write the hypergeometric datum in its GammaList form when doing this. The appropriate Kummer-Tate twist of the Jacobi motive gives the tame hypergeometric Euler factor corresponding to trivialised inertia near t=0 or t=∞.
> H := HypergeometricData([* 1,2,3,3,6, -5,-5,-5 *]); H;
Hypergeometric data given by [ 1, 1, 2, 2, 3, 3, 3, 6 ] and [ 5, 5, 5 ]
> Weight(H);
3
> POS := [x/5 : x in GammaList(H) | x ge 0];
> NEG := [x/5 : x in GammaList(H) | x le 0];
> J:=JacobiMotive(POS,NEG); J; // weight 5
Jacobi motive given by 2*[1/5]+[2/5]+2*[3/5]
> p := 11; // check 5th powers for beta value
> EulerFactor(H,1/p^5/MValue(H),p); // weight 3-2
121*x^4 + 11*x^3 - 9*x^2 + x + 1
> EulerFactor(TateTwist(J,2),p); // weight 5-2*2
121*x^4 + 11*x^3 - 9*x^2 + x + 1
> [EulerFactor(H,u/p^5/MValue(H),p) : u in [1..p-1]];
[
    121*x^4 + 11*x^3 - 9*x^2 + x + 1,
    121*x^4 + 121*x^3 + 51*x^2 + 11*x + 1,
    121*x^4 - 44*x^3 + 6*x^2 - 4*x + 1,
    121*x^4 - 99*x^3 + 41*x^2 - 9*x + 1,
    121*x^4 + 11*x^3 + 21*x^2 + x + 1,
    121*x^4 + 11*x^3 + 21*x^2 + x + 1,
    121*x^4 - 99*x^3 + 41*x^2 - 9*x + 1,
    121*x^4 - 44*x^3 + 6*x^2 - 4*x + 1,
    121*x^4 + 121*x^3 + 51*x^2 + 11*x + 1,
    121*x^4 + 11*x^3 - 9*x^2 + x + 1
]
> [EulerFactor(JacketMotive(POS,NEG,u,1/5,2),p) : u in [1..p-1]];
[
    121*x^4 + 11*x^3 - 9*x^2 + x + 1,
    121*x^4 + 121*x^3 + 51*x^2 + 11*x + 1,
    121*x^4 - 44*x^3 + 6*x^2 - 4*x + 1,
    121*x^4 - 99*x^3 + 41*x^2 - 9*x + 1,
    121*x^4 + 11*x^3 + 21*x^2 + x + 1,
    121*x^4 + 11*x^3 + 21*x^2 + x + 1,
    121*x^4 - 99*x^3 + 41*x^2 - 9*x + 1,
    121*x^4 - 44*x^3 + 6*x^2 - 4*x + 1,
    121*x^4 + 121*x^3 + 51*x^2 + 11*x + 1,
    121*x^4 + 11*x^3 - 9*x^2 + x + 1
]
> p := 31;
> &and[EulerFactor(H,u/p^5/MValue(H),p) eq
>      EulerFactor(JacketMotive(POS,NEG,u,1/5,2),p) : u in [1..p-1]];
true

The same can be done for the α parameters, with positive valuation in the t-values. Here there can be various contributions depending which of the positive γ-values (1,2,3,3,6) divide the valuation.

> p := 7; // again take a prime that is 1 mod 6
> d := 6;
> D := Divisors(d);
> POS := [[x/e : x in GammaList(H) | x ge 0] : e in D];
> NEG := [[-x/e : x in GammaList(H) | x le 0] : e in D];
> A, B := CyclotomicData(H);
> for e in D do e,Multiplicity(A cat B,e); end for;
1 2 // weight should be 3 + 1 - 2
2 2 // weight should be 3 + 1 - 2
3 3 // weight should be 3 + 1 - 3
6 1 // weight should be 3 + 1 - 1
> EulerFactor(H,p^2/MValue(H),p);
49*x^2 - 14*x + 1
> f1 := EulerFactor(JacobiMotive(POS[1],NEG[1] : Weight:=2),p);
> f2 := EulerFactor(JacobiMotive(POS[2],NEG[2] : Weight:=2),p);
> f1 * f2;
49*x^2 - 14*x + 1
> function ef(t0,v) ans:=PolynomialRing(Integers())!1;
>   for i in [1..#D] do
>     e := D[i]; if Gcd(v,e) ne e then continue; end if;
>     w := Weight(H)+1-Multiplicity(A cat B,e);
>     J := JacobiMotive(POS[i],NEG[i] : Kummer:=[t0,1/e], Weight:=w);
>     ans := ans*EulerFactor(J,p); end for;
>   return ans; end function;
> for i in [1..100] do v:=Random([1..12]); t0:=Random([1..p-1]);
>   assert EulerFactor(H,t0*p^v/MValue(H),p) eq ef(t0,v); end for;
V2.28, 13 July 2023