> H := HypergeometricData([1/2],[0]); // weight 0 > t := 3/5; > A := ArtinRepresentation(H,t); > D := Discriminant(Integers(Field(A))); // -24 > assert IsSquare(D/(t*(t-1))); // Q(sqrt(t(t-1))) > R := ArtinRepresentationQuadratic(-24); > assert A eq R; > // > H := HypergeometricData([1/4,3/4],[0,0]); > Weight(H); 1 > DefiningPolynomials(H); y^2 + 1, y^2 - 2*y + 1 > t := 3/2; > E := EllipticCurve(H,t); E; Elliptic Curve defined by y^2 + x*y = x^3 + 1/96*x over Q > P := PrimesInInterval(5,100); > &and[EulerFactor(E,p) eq EulerFactor(H,t,p) : p in P]; true > // > f := CyclotomicPolynomial(6)*CyclotomicPolynomial(2); > g := CyclotomicPolynomial(1)^3; > H := HypergeometricData(f,g); H; Hypergeometric data given by [ 2, 6 ] and [ 1, 1, 1 ] > Weight(H); 2 > GammaList(H); [* -1, -1, -1, -3, 6 *] > GammaArray(H); [ -3, 0, -1, 0, 0, 1 ] > [EulerFactor(H,4,p) : p in [5,7,11,13,17,19]]; [ 125*y^3 + 20*y^2 + 4*y + 1, 343*y^3 - 42*y^2 - 6*y + 1, -1331*y^3 - 22*y^2 + 2*y + 1, -2197*y^3 - 156*y^2 + 12*y + 1, 4913*y^3 + 323*y^2 + 19*y + 1, 6859*y^3 - 57*y^2 - 3*y + 1 ] > // > _<u> := FunctionField(Rationals()); > H := HypergeometricData([-2,0,0,-1,0,1] : Print:="alpha_beta"); > H; // weight 1 Hypergeometric data given by [1/6,1/3,2/3,5/6] and [0,0,1/4,3/4] > HyperellipticCurve(H); // defined over Q(u) Hyperelliptic Curve defined by y^2 = 4*x^6 - 8*x^5 + 4*x^4 - 64/729/u > t := 4; > C := Specialization($1,t); // only works over Q(u) > &and[EulerFactor(C,p) eq EulerFactor(H,t,p) : p in P]; true > // > H := HypergeometricData([0,-1,0,1,0,1,0,-1] : Print:="alpha_beta"); > H; // weight 1 Hypergeometric data given by [1/6,1/3,2/3,5/6] and [1/8,3/8,5/8,7/8] > MValue(H); 729/4096 > t := 3; // could alternatively specialize later > E := EllipticCurve(H,t); aInvariants(E); [ 0, 0, -s, -s, 0] where s^2 is 4096/2187 > &and[EulerFactor(E,p) eq EulerFactor(H,t,p) : p in P]; true
> f := CyclotomicPolynomial(6); > g := CyclotomicPolynomial(1)*CyclotomicPolynomial(2); > H := HypergeometricData(f,g); H; assert(Weight(H)) eq 0; Hypergeometric data given by [ 6 ] and [ 1, 2 ] > A := ArtinRepresentation(H,-4/5); > K := OptimisedRepresentation(Field(A)); > DefiningPolynomial(K); y^6 - 3*y^5 + 3*y^4 - y^3 + 3*y^2 - 3*y + 1 > T := Twist(H); T; Hypergeometric data given by [ 3 ] and [ 1, 2 ] > A := ArtinRepresentation(T,-4/5); > L := OptimisedRepresentation(Field(A)); > IsSubfield(L,K), DefiningPolynomial(L); true Mapping from: L to K, y^3 + 3*y - 1
The same can be said for twisting for (hyper)elliptic curves.
> H := HypergeometricData([2,2],[3]); // Phi_2^2 and Phi_3 > E := EllipticCurve(H,3); > T := EllipticCurve(Twist(H),3); > IsQuadraticTwist(E,T); true -4/9 > // > H := HypergeometricData([5],[8]); // Phi_5 and Phi_8 > C := HyperellipticCurve(H); > t := 7; > S := Specialization(C,t); > T := HyperellipticCurve(Twist(H),t); > Q := QuadraticTwist(T,5*t); // get right parameter > assert IsIsomorphic(Q,S);
> H := HypergeometricData([3],[4]); // Phi_3 and Phi_4 > GammaList(H); [* -1, 2, 3, -4 *] > H2 := HypergeometricData([* -2, 4, 6, -8 *]); > IsPrimitive(H2); false 2 > PrimitiveData(H2) eq H; true > H3 := HypergeometricData([* -3, 6, 9, -12 *]); > IsPrimitive(H3); false 3 > PrimitiveData(H3) eq H; true > aInvariants(EllipticCurve(H)); [ 0, 0, -64/27/u, -64/27/u, 0 ] where u is FunctionField(Q).1 > aInvariants(EllipticCurve(H2)); [ 0, 0, -s, -s, 0 ] where s^2=(-64/27)^2/u > aInvariants(EllipticCurve(H3)); [ 0, 0, -s, -s, 0 ] where s^3=(-64/27)^3/u
> _<u> := FunctionField(Rationals()); > H := HypergeometricData([* -2, 3, 4, -5 *]); // degree 4 > C := CanonicalScheme(H); > _<[X]> := Ambient(C); C; Scheme over Univariate rational function field over Q defined by X[1] + X[2] - 1, X[3] + X[4] - 1, X[1]^2*X[2]^5 - 3125/1728/u*X[3]^3*X[4]^4 > Dimension(C), Genus(Curve(C)); // genus 2 curve 1 2 > assert IsHyperelliptic(Curve(C)); > CC := CanonicalCurve(H); _<x,y> := Ambient(CC); CC; Curve over Univariate rational function field over Q defined by x^7 - 2*x^6 + x^5 + 3125/1728/u*y^7 - 3125/576/u*y^6 + 3125/576/u*y^5 - 3125/1728/u*y^4 > b, C2 := IsHyperelliptic(CC); assert b; > HyperellipticCurve(H); // in the degree 4 catalogue Hyperelliptic Curve defined over Univariate function field over Q by y^2 = 4*x^5 - 3125/432/u*x^3 + 9765625/2985984/u^2 > assert IsIsomorphic(HyperellipticCurve(H),C2); > // and an example where the curve is reducible > H := HypergeometricData([* 6,6,-8,-4 *]); // weight 1 > C := CanonicalCurve(H); > A := AlgorithmicFunctionField(FunctionField(C)); > E<s> := ExactConstantField(A); > CE := BaseChange(C,E); > I := IrreducibleComponents(CE); assert #I eq 2; > _<x,y> := Ambient(I[1]); I[1]; Scheme over E defined by [ where s^2 = 1048576/531441/u ] x^6 - 2*x^5 + x^4 - s*y^6 + 3*s*y^5 - 3*s*y^4 + s*y^3 > b, C2 := IsHyperelliptic(Curve(I[1])); assert b;
> G := [* -1,-1,-1,-1,-1, 2,2,2,2, 3,3,3, -6,-6 *]; // size 14 > H := HypergeometricData(G); // [2,2,3] [6,6], degree 4 > AssociatedSchemes(H); // two schemes in this case [* Scheme over Univariate rational function field over Q by y1+y6+y7+y11+y13, y10+y12+y14, y2+y3+y8, y4+y5+y9, -y1*y13^6*y14^6*y2*y3*y4*y5 - $.1*y6^2*y7^2*y11^3*y10^3*y12^3*y8^2*y9^2, Scheme over Univariate rational function field over Q by y6+y7+y8+y13, y11+y12+y14, y1+y2+y3+y10, y4+y5+y9, -y13^6*y14^6*y1*y2*y3*y4*y5 - $.1*y6^2*y7^2*y8^2*y11^3*y12^3*y10^3*y9^2 *] [ [ [ -6,-1,2,2,3 ],[ -6,3,3 ],[ -1,-1,2 ],[ -1,-1,2 ] ], [ [ -6,2,2,2 ],[ -6,3,3 ],[ -1,-1,-1,3 ],[ -1,-1,2 ] ] ] 5 // the dimension
The number of AssociatedSchemes is typically not too large, and the partition into zerosum-subsets typically is somewhat nontrivial.
> PHD := [HypergeometricData(h) : h in PossibleHypergeometricData(6)]; > SCH := [<a,b,c> where a,b,c:=AssociatedSchemes(h) : h in PHD]; > Multiset([#s[1] : s in SCH]); // number of schemes {* 1^^661, 2^^279, 3^^159, 4^^75, 5^^32, 6^^25, 7^^8, 8^^7, 9^^6, 10, 11, 13^^2, 15 *} > Multiset([#s[2][1] : s in SCH]); // size of splitting {* 1^^204, 2^^487, 3^^320, 4^^155, 5^^60, 6^^27, 7^^4 *} > Multiset([s[3] : s in SCH]); // resulting dimension {* 0^^6, 1^^112, 2^^161, 3^^507, 4^^154, 5^^271, 6^^19, 7^^25, 8, 9 *}
> H := HypergeometricData([1/2,1/2,1/2,1/2],[0,0,0,0]); > L := LSeries(H,-1 : BadPrimes:=[<2,9,1>]); // guessed > CFENew(L); -5.91645678915758854058796423962E-31 > LGetCoefficients(L,100); [* 1, 0, 0, 0, -4, 0, 0, 0, -6, 0, 0, 0, -84, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, -140, 0, 0, 0, 24, 0, 0, 0, -238, 0, 0, 0, 924, 0, 0, 0, 0, 0, 0, 0, -820, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, -396, 0, 0, 0, 0, 0, 0, 0, -693, 0, 0, 0, -144, 0, 0, 0, -300, 0, 0, 0, 0, 0, 0, 0, -252, 0, 0, 0 *] > // compare to the Tensor product way of getting this example > E := EllipticCurve("32a"); > NF := Newforms(ModularForms(DirichletGroup(32).1,3)); // wt 3 w/char > L1 := LSeries(E); L2 := LSeries(ComplexEmbeddings(NF[1][1])[1][1]); > TP := TensorProduct(L1, L2, [ <2, 9> ]); // conductor 2^9 (guessed) > [Round(Real(x)) : x in LGetCoefficients(TP,100)]; [ 1, 0, 0, 0, -4, 0, 0, 0, -6, 0, 0, 0, -84, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, -140, 0, 0, 0, 24, 0, 0, 0, -238, 0, 0, 0, 924, 0, 0, 0, 0, 0, 0, 0, -820, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, -396, 0, 0, 0, 0, 0, 0, 0, -693, 0, 0, 0, -144, 0, 0, 0, -300, 0, 0, 0, 0, 0, 0, 0, -252, 0, 0, 0 ]
> PHD := PossibleHypergeometricData(4); > t := 2; p := 13; > Z := Integers(); > for h in PHD do H:=HypergeometricData(h); A:=H`alpha; B:=H`beta; > assert HypergeometricTrace(H,t,p) eq Z!HypergeometricTraceK(A,B,t,p); > end for;
Next we consider the "Klein quartic" datum defined over (Q)(Sqrt( - 7)). For split primes, its trace will be a quadratic surd.
> A := [1/14,9/14,11/14]; > B := [1/4,3/4,1]; > p := 29; // a split prime in Q(sqrt(-7)) > e := HypergeometricTraceK(A,B,2,p : Precision:=10); > PowerRelation(e,4); x^2 - x + 2
In more generality, one can expect elements in cyclotomic fields.
> e := HypergeometricTraceK([1/8,7/8],[0,1/4],2,17 : Precision:=10); > PowerRelation(e,4); 17*x^4 + 8*x^3 + 24*x^2 + 32*x + 16 > assert IsIsomorphic(NumberField($1),CyclotomicField(8)); > // > e := HypergeometricTraceK([1/8,7/8],[0,1/4],2,97 : Precision:=10); > PowerRelation(e,4); 97*x^4 + 56*x^3 - 232*x^2 + 224*x + 784 > assert IsIsomorphic(NumberField($1),CyclotomicField(8)); > // and a non-split prime, with q = 1 mod 8 > e := HypergeometricTraceK([1/8,7/8],[0,1/4],2,7^2 : Precision:=20); > PowerRelation(e,2); // generates Q(sqrt(2)) 7*x^2 - 4*x - 4
The K-trace property can also be used to compute at t-values which are not rational. For instance, work of Guillera [Gui12], [AG12] implies that t=8/(15√5 - 33)3 should give a pole for (Φ23Φ3, Φ15), and we can verify numerically that the (normalized) traces have average 1 for small primes (and also that the second moment is approximately 2, indicating a splitting).
> H := HypergeometricData([2,2,2,3],[1,1,1,1,1]); // weight 4 > A := H`alpha; B := H`beta; > Z := Integers(); > f := func<p|(1/((15*Sqrt(pAdicField(p,20)!5)-33)/2)^3)>; > P := [p : p in PrimesUpTo(200) | p^2 mod 5 eq 1]; > R := [<p,Z!HypergeometricTraceK(A,B,Z!f(p),p)> : p in P]; > &+[r[2]/r[1]^2*1.0 : r in R]/#P; 1.13162808398732021466387060353 > &+[r[2]^2/r[1]^4*1.0 : r in R]/#P; // second moment 2.32631764414942310383344594579
Comparatively, most t-values have mean zero and second moment of 1, though again by [Gui12] we expect that t=(4/3)3 is exceptional.
> MomentData(LSeries(H,5),P,2); // t = 5 0.14376 [ 0.84480 ] > MomentData(LSeries(H,11),P,2); // t = 11 0.17961 [ 0.68179 ] > MomentData(LSeries(H,(4/3)^3),P,2); // t = (4/3)^3 0.81211 [ 1.2554 ] // P is not that robust > MomentData(LSeries(H,(4/3)^3),PrimesUpTo(1000),2); 0.98494 [ 1.9196 ]
Finally, we demonstrate how to work with p-adic inputs for the t-parameter.
> A := [1/4]; B := [1/3]; > Qp := pAdicField(5,20); > E := ext<Qp|Polynomial([-2,0,1])>; // x^2-2, unramified > HypergeometricTraceK(A,B,4+E.1,5); 1190*E.1 + 1258 + O(5^5) > HypergeometricTraceK(A,B,4-E.1,5); -1190*E.1 + 1258 + O(5^5)
> H := HypergeometricData([1/2,1/2,1/2,1/2],[0,0,0,0]); > Lf := LSeries(Newforms(ModularForms(8,4))[1][1]); > T := PolynomialRing(Integers()).1; // dummy variable > f3 := EulerFactor(Lf,3 : Integral)*(1-3*T); // make it a poly > f5 := EulerFactor(Lf,5 : Integral)*(1-5*T); // via Integral > f17 := EulerFactor(Lf,17 : Integral)*(1-17*T); > f2 := 1+T+6*T^2+8*T^3+64*T^4; // determined by Tornaria > BP := [<2,0,f2>,<3,1,f3>,<5,1,f5>,<17,1,f17>]; > L := LSeries(H,256 : BadPrimes:=BP); > Conductor(L); 255 > assert Abs(CFENew(L)) lt 10^(-28);
One need not specify all the bad prime information as in the above example. Here is a variation on it, with t=1/28 (note that this actually gives the same L-series, as the data is a self-twist, with the character induced by twisting being trivial for this choice of t). Note that only the information at 2 is given to LSeries.
> H := HypergeometricData([1/2,1/2,1/2,1/2],[0,0,0,0]); > MValue(H); 256 > t := 1/2^8; // makes v_2(Mt)=0 > f2 := EulerFactor(H,t,2 : Fake); > f2; 64*T^4 + 8*T^3 + 6*T^2 + T + 1 > L := LSeries(H,t : BadPrimes:=[<2,0,f2>]); > Conductor(L); 255 > assert Abs(CFENew(L)) lt 10^(-28);
Grössencharacter example over (Q)(ζ5) given in Example H42E10. The action on inertia at p=11 involves ζ5 when 11|t, and here it is raised to the 5th power, thus trivialising it. As with previous example, the deformation theory also involves a weight 4 modular form, here of level 25.
> f := CyclotomicPolynomial(5); g := CyclotomicPolynomial(1)^4; > H := HypergeometricData(f,g : Print:="alpha_beta"); > H, Weight(H); // weight 3 Hypergeometric data given by [1/5,2/5,3/5,4/5] and [0,0,0,0] 3 > t := 11^5; // 11 is now good, as is raised to 5th power > T := PolynomialRing(Rationals()).1; > f2 := (1-T+8*T^2)*(1+2*T); // could have Magma compute these > f3221 := (1-76362*T+3221^3*T^2)*(1-3221*T); // wt 4 lev 25 > // degree 4 factor at 11 comes from Grossencharacter > // in fact, this is the t=0 deformation: sum_i x_i^5 = 0 > K<z5> := CyclotomicField(5); > p5 := Factorization(5*Integers(K))[1][1]; // ramified > G := HeckeCharacterGroup(p5^2); > psi := Grossencharacter(G.0,[[3,0],[1,2]]); > f11 := EulerFactor(LSeries(psi),11 : Integral); f11; 1771561*x^4 - 118459*x^3 + 3861*x^2 - 89*x + 1 > BP := [<2,1,f2>,<5,4,1>,<11,0,f11>,<3221,1,f3221>]; > L := LSeries(H,t : BadPrimes:=BP); > Conductor(L); // 2*5^4*3221, 5^4 is somewhat guessed 4026250 > LSetPrecision(L,5); > LCfRequired(L); // approx with old CheckFunctionalEquation 12775 // > time CFENew(L); // actually needs much fewer now 1.5259E-5 Time: 4.290
Again one need not specify all the bad prime information, as Magma can automatically compute it at multiplicative and tame primes (however, the local conductor at 5 must be specified).
> EulerFactor(H,t,11); // tame 1771561*T^4 - 118459*T^3 + 3861*T^2 - 89*T + 1 > EulerFactor(H,t,2); // multiplicative 16*T^3 + 6*T^2 + T + 1 > EulerFactor(H,t,3221); // multiplicative -107637325775281*T^3 + 33663324863*T^2 - 79583*T + 1
One can also choose t so as to trivialise the wild prime 5.
> MValue(H); // 5^5; 3125 > t := 11^5/5^5; > f5 := EulerFactor(H,t,5 : Fake); // v_5(Mt)=0 > f5; 15625*T^4 - 125*T^3 - 45*T^2 - T + 1 > L := LSeries(H,t : BadPrimes:=[<5,0,f5>]); > Conductor(L); // 2*3*26321, Magma computes Euler factors 157926 > LSetPrecision(L,9); // about 4000 terms > CFENew(L); -2.32830644E-10 > t := -11^5/5^5; // another choice with v_5(Mt)=0 > f5 := EulerFactor(H,t,5 : Fake); // v_5(Mt)=0 > f5; // four possible Euler factors, one for each Mt mod 5 15625*T^4 + 1750*T^3 + 230*T^2 + 14*T + 1 > L := LSeries(H,t : BadPrimes:=[<5,0,f5>]); > Conductor(L); // 2*31*331, Magma computes Euler factors 20522 > LSetPrecision(L,9); // about 1300 terms > CFENew(L); 4.65661287E-10
> T := PolynomialRing(Rationals()).1; // dummy variable > H := HypergeometricData([3,4,6,12],[1,1,5,5]); // degree 10 > b, HC := IsHyperelliptic(CanonicalCurve(H)); // genus 5 > assert b; Genus(HC); 5 > EulerFactor(Specialization(HC,13^12),13); // 13 becomes good 371293*T^10 - 285610*T^9 + 125229*T^8 - 31096*T^7 + 4810*T^6 - 540*T^5 + 370*T^4 - 184*T^3 + 57*T^2 - 10*T + 1 > EulerFactor(H,13^12,13); // use hypergeometric methods 371293*T^10 - 285610*T^9 + 125229*T^8 - 31096*T^7 + 4810*T^6 - 540*T^5 + 370*T^4 - 184*T^3 + 57*T^2 - 10*T + 1 > assert &and[EulerFactor(Specialization(HC,p^12),p) > eq EulerFactor(H,p^12,p) : p in [11,13,17,19]]; > assert &and[EulerFactor(Specialization(HC,t0*13^12),13) > eq EulerFactor(H,t0*13^12,13) : t0 in [1..12]];
One can take a smaller power than the 12th, but then the curve will not become completely good at the prime. However, the hypergeometric calculations will still be possible.
> EulerFactor(H,17^4,17); 17*T^2 + 2*T + 1 > EulerFactor(H,19^9,19); // takes the Phi_3 term 19*T^2 + 7*T + 1 > EulerFactor(H,19^6,19); 361*T^4 + 114*T^3 + 31*T^2 + 6*T + 1 > EulerFactor(H,1/11^5,11); // degree is phi(1)+phi(5) -T^5 + 1 > EulerFactor(H,4/11^5,11); // degree is phi(1)+phi(5) -T^5 + 5*T^4 - 10*T^3 + 10*T^2 - 5*T + 1
A similar exploration is possible with a weight 0 example. Here the Artin representation machinery is better able to cope with partially good primes.
> H := HypergeometricData([2,3,6],[1,5]); // degree 5 > Q := Rationals(); > EulerFactor(ArtinRepresentation(H,7^6),7 : R:=Q); -T^5 - T^4 - T^3 + T^2 + T + 1 > EulerFactor(ArtinRepresentation(H,7^3),7 : R:=Q); T^2 + T + 1 > EulerFactor(ArtinRepresentation(H,7^2),7 : R:=Q); -T + 1 > EulerFactor(ArtinRepresentation(H,2/11^5),11 : R:=Q); -T^5 + 5*T^4 - 10*T^3 + 10*T^2 - 5*T + 1 > EulerFactor(H,7^6,7); // compute it directly from H -T^5 - T^4 - T^3 + T^2 + T + 1 > EulerFactor(H,7^3,7); T^2 + T + 1 > EulerFactor(H,7^2,7); -T + 1 > EulerFactor(H,2/11^5,11); -T^5 + 5*T^4 - 10*T^3 + 10*T^2 - 5*T + 1
> p := 11; assert p mod 4 eq 3 and p ne 3 and IsPrime(p); > SQ := [-Integers()!x : x in GF(p) | IsSquare(x) and x ne 0]; > H := HypergeometricData([* x : x in [-&+SQ] cat SQ *]); > GammaList(H); [* -1, -3, -4, -5, -9, 22 *] > Weight(H); assert Weight(H) eq (p-5)/2; 3 > K := QuadraticField(-p); > I := Factorization(p*Integers(K))[1][1]; > G := HeckeCharacterGroup(I); // get Tate twist of canonical GR > u := (Weight(H)+ClassNumber(K)) div 2; > v := (Weight(H)-ClassNumber(K)) div 2; //u+v=wt, u-v=classno > u,v; 2 1 > GR := Grossencharacter(G.0,[[u,v]]); // [6,3] for sqrt(-23) > for l in [l : l in PrimesUpTo(1000) | l mod p eq 1] do > ef := EulerFactor(H,l^p/MValue(H),l); > F := Factorization(ef); > assert #F eq 1 and F[1][2] eq (p-1)/2; > assert F[1][1] eq EulerFactor(GR,l : Integral); > printf "%o %o n",l,F[1][1]; > end for; 23 12167*x^2 + 207*x + 1 67 300763*x^2 - 871*x + 1 89 704969*x^2 + 801*x + 1 199 7880599*x^2 + 3980*x + 1
> for d in [1..8] do > [#PossibleHypergeometricData(d : Weight:=w) : w in [0..d-1]]; > end for; [ 1 ] [ 3, 10 ] [ 3, 0, 10 ] [ 11, 74, 30, 47 ] [ 7, 0, 93, 0, 47 ] [ 23, 287, 234, 487, 84, 142 ] [ 21, 0, 426, 0, 414, 0, 142 ] [ 51, 1001, 1234, 3247, 894, 1450, 204, 363 ] > D4w1 := PossibleHypergeometricData(4 : Weight:=1); > D := [HypergeometricData(x) : x in D4w1]; // 12 are self-twists > #[x : x in D | Twist(x) eq x or Twist(x) eq SwapAlphaBeta(x)]; 12 > #PossibleHypergeometricData(4 : Weight:=1,TwistMinimal); 43 > #PossibleHypergeometricData(4 : Weight:=1,Primitive); 64 > // speed test for SaveLimit > H := HypergeometricData([1/2,1/2,1/2,1/2],[0,0,0,0]); > HypergeometricMotiveSaveLimit(2000); > time _:=LGetCoefficients(LSeries(H,-1),2000); Time: 1.040 > time _:=LGetCoefficients(LSeries(H,-1),2000); Time: 0.540 > HypergeometricMotiveClearTable(); > time _:=LGetCoefficients(LSeries(H,-1),2000); Time: 1.030
As indicated partially in the previous description, one can specialize the (singular) parameter t=1 in a family of a hypergeometric motives, and still get a arithmetic object. In doing this, the degree drops by 1, or 2 if the original datum has even degree and odd weight. However, the weight stays the same. All primes that are not involved with the cyclotomic data can be considered "multiplicative" in that p|(t - 1). Magma contains a "database" of bad Euler information for all HGMs up through degree 6. Some examples are given below.
Note that any degree 2 weight 1 hypergeometric datum will have a t=1 specialization with a degree 0 L-function, that is, the trivial L-function that is identically 1. One of the degree 2 weight 0 data gives the Riemann ζ-function, and the other two give Artin representations (which could be written as Dirichlet characters).
> H := HypergeometricData([6],[1,2]); > L := LSeries(H,1); L; L-series of Artin rep C2: (1,-1) of ext<Q|x^2-3>, conductor 12 > H := HypergeometricData([3],[1,2]); // twist of above > L := LSeries(H,1); L; L-series of Riemann zeta function > H := HypergeometricData([4],[1,2]); > L := LSeries(H,1); L; L-series of Artin rep C2: (1,-1) of ext<Q|x^2-2>, conductor 8
Magma automatically identifies the examples where the resulting degree is 2 or less, and also some additional Artin representations. However, for (Φ5, Φ62) and its twist, the resulting newform has level 5400, and as the identification in this space might be expensive, it is not made.
> H := HypergeometricData([12],[1,2,3]); // degree 4 > L := LSeries(H,1); L; // drops to degree 3 L-series of Artin rep S4: (3,-1,1,0,-1) of ext<Q|x^4-4*x-6>, cond 6912 > // both the next two drop to degree 2 (odd wt) > H := HypergeometricData([2,2,6],[10]); > L := LSeries(H,1); L; CremonaReference(L`parent); L-series of Elliptic Curve y^2 + y = x^3 - 75*x + 256 over Q 225e1 > H := HypergeometricData([2,2,3],[4,4]); > L := LSeries(H,1); L; Conductor(L); L-series of q - 2*q^5 + 12*q^7 - 60*q^11 + O(q^12) 288
In general, the returned object is just an L-series label, with the correct bad Euler data attached. There are also various examples (necessarily in even weight) where a translate of the Riemann ζ-function is a factor of L-series.
> H := HypergeometricData([3,8],[1,2,2,2,6]); > Degree(H), Weight(H); 6 2 > L:=LSeries(H,1); > Degree(L); // drops by 1 5 > L; (L-function for param t=1 of HG data given by [3,8] and [1,2,2,2,6] / Translation by 1 of L-series of Riemann zeta function) * (Translation by 1 of L-series of Riemann zeta function) > BadPrimeData(L); // conductor 2^7 * 3^2 [ <2, 7, 8*x^3 - 4*x^2 - 2*x + 1>, <3, 2, -27*x^3 - 3*x^2 + x + 1> ] > CFENew(L); // check the bad Euler info 0.000000000000000000000000000000
In general, the local conductors bad Euler factors (possibly trivial) were found by a process of trial and error, aided by ideas from David Roberts and Fernando Rodriguez-Villegas.
> H := HypergeometricData([5,6],[1,1,2,2,3]); // deg 6 wt 1 > L := LSeries(H,1); // degree 4 > BadPrimeData(L); [ <2, 1, -2*x^3 + x + 1>, // (1-x)*(1+2x+2x^2) <3, 1, -3*x^3 + 2*x^2 + 1>, // (1-x)*(1+x+3x^2) <5, 4, 1> ] > LSetPrecision(L,15); > CFENew(L); 0.000000000000000 > // > H := HypergeometricData([14],[1,1,1,2,3]); // deg 6 wt 2 > L := LSeries(H,1); // degree 5 > BadPrimeData(L); // cond too large to check here [ <2, 10, 1>, <3, 3, 3*x^2 - 4*x + 1>, // (1-x)(1-3x), mixed weight <7, 5, 1> ]
There are some exotic examples where the specialized L-function factors into degree 2 L-functions of modular forms (or elliptic curves), or at least has an identifiable factor of smaller degree.
> H := HypergeometricData([2,2,4,6],[3,10]); > L := LSeries(H,1); // reduce to deg 4 and wt 1 > E1 := EllipticCurve("400c"); > E2 := EllipticCurve("1200l"); > X := LSeries(E1)*LSeries(E2); > &and[EulerFactor(L,p) eq EulerFactor(X,p) : p in PrimesUpTo(100)]; true > // > H := HypergeometricData([2,2,2,2,2,2],[1,1,1,1,1,1]); > L := LSeries(H,1); // reduce to deg 4 and wt 5 > f4 := Newforms(CuspForms(8,4))[1][1]; // modular forms > f6 := Newforms(CuspForms(8,6))[1][1]; // of level 8 > Y := Translate(LSeries(f4),1)*LSeries(f6); > &and[EulerFactor(L,p) eq EulerFactor(Y,p) : p in PrimesUpTo(100)]; true > // > H := HypergeometricData([3,3,3,3],[6,6,6,6]); > L := LSeries(H,1); // deg 6 weight 7 > P := PrimesInInterval(5,100); > &+[1.0*Coefficient(EulerFactor(L,p : Degree:=1),1)^2/p^7 : p in P]/#P; 1.99744382297573720150050401754 // imprimitive, 2 factors > f6 := Newforms(CuspForms(36,6))[2][1]; // level 36 modwt 6 > LQ := Translate(LSeries(f6),1); // make it weight 7 > P30 := PrimesInInterval(5,30); > &and[IsDivisibleBy(EulerFactor(L,p),EulerFactor(LQ,p)) : p in P30]; true