In this section we describe how to compute both cuspidal and Eisenstein newforms.
The intrinsics below require that the base ring of M has characteristic 0. To compute mod p eigenforms, use the Reduction intrinsic (see Section Reductions and Embeddings).
Proof: BoolElt Default: true
The number of Galois conjugacy-classes of newforms associate to the modular forms space M, which must have base ring Z or Q. By "associated to" we mean that the newform lies in M tensor C.
Proof: BoolElt Default: true
The jth Galois-conjugate newform in the ith Galois-orbit of newforms in the space of modular forms M, which must have base ring Z or Q.
Proof: BoolElt Default: true
The first Galois-conjugate newform in the ith orbit in the space of modular forms M, which must have base ring Z or Q.
Proof: BoolElt Default: true
OnePerOrbit: BoolElt Default: false
Sort list of the newforms associated to the space of modular forms M divided up into Galois orbits. If OnePerOrbit is true, return only one representative from each Galois orbit.
Use this intrinsic to find the newforms associated to the space of modular forms M with prespecified eigenvalues. Here I is a sequence [< p1, f1(x) >, ..., < pn, fn(x) >] of pairs. Each pair consists of a prime number that does not divide the level of M and a polynomial. This intrinsic returns the set of newforms ∑an qn in M such that fn(apn)=0. (This intrinsic only works when M is cuspidal and defined over Q or Z.)
Given a newspace M, returns representatives of each of the Galois orbits of newforms in M.
> M := ModularForms(Gamma1(8),5); M; Space of modular forms on Gamma_1(8) of weight 5 and dimension 11 over Integer Ring. > NumberOfNewformClasses(M); 4 > Newforms(M); [* [* q + 4*q^2 - 14*q^3 + 16*q^4 - 56*q^6 + O(q^8) *], [* q + 1/24*(a - 30)*q^2 + 6*q^3 + 1/12*(-a - 162)*q^4 + 1/3*(-a + 6)*q^5 + 1/4*(a - 30)*q^6 + 1/3*(2*a - 12)*q^7 + O(q^8), q + 1/24*(b - 30)*q^2 + 6*q^3 + 1/12*(-b - 162)*q^4 + 1/3*(-b + 6)*q^5 + 1/4*(b - 30)*q^6 + 1/3*(2*b - 12)*q^7 + O(q^8) *], [* 57/2 + q + q^2 + 82*q^3 + q^4 - 624*q^5 + 82*q^6 - 2400*q^7 + O(q^8) *], [* q + 16*q^2 + 82*q^3 + 256*q^4 + 624*q^5 + 1312*q^6 + 2400*q^7 + O(q^8) *] *] > Newform(M,1); q + 4*q^2 - 14*q^3 + 16*q^4 - 56*q^6 + O(q^8) > Newform(M,2); q + 1/24*(a - 30)*q^2 + 6*q^3 + 1/12*(-a - 162)*q^4 + 1/3*(-a + 6)*q^5 + 1/4*(a - 30)*q^6 + 1/3*(2*a - 12)*q^7 + O(q^8) > Parent(Newform(M,2)); Space of modular forms on Gamma_1(8) of weight 5 and dimension 2 over Number Field with defining polynomial x^2 - 12*x + 8676 over the Rational Field. > Newform(M,2,2); q + 1/24*(b - 30)*q^2 + 6*q^3 + 1/12*(-b - 162)*q^4 + 1/3*(-b + 6)*q^5 + 1/4*(b - 30)*q^6 + 1/3*(2*b - 12)*q^7 + O(q^8) > IsEisensteinSeries(Newform(M,1)); false > IsEisensteinSeries(Newform(M,2)); false > IsEisensteinSeries(Newform(M,3)); true > IsEisensteinSeries(Newform(M,4)); trueThe following example demonstrates picking out a newform in S2(Γ0(65)) with prespecified eigenvalues.
> S := CuspForms(65,2);
> R<x> := PolynomialRing(IntegerRing());
> I := [<3,x+2>];
> Newforms(I,S);
[* [*
q - q^2 - 2*q^3 - q^4 - q^5 + 2*q^6 - 4*q^7 + O(q^8)
*] *]
> Factorization(HeckePolynomial(S, 2));
[
<x + 1, 1>,
<x^2 - 3, 1>,
<x^2 + 2*x - 1, 1>
]
> I := [<2,x^2-3>];
> Newforms(I,S);
[* [*
q + a*q^2 + (-a + 1)*q^3 + q^4 - q^5 + (a - 3)*q^6 + 2*q^7 + O(q^8),
q + b*q^2 + (-b + 1)*q^3 + q^4 - q^5 + (b - 3)*q^6 + 2*q^7 + O(q^8)
*] *]
It is possible to obtain the galois-conjugacy class of a newform by giving a descriptive label as an argument to Newforms. The format of the label is as follows:
[G0N or G1N][Level]k[Weight][Isogeny Class].
Some example labels are "G0N11k2A", "G0N1k12A", "G1N17k2B", and "G1N9k3B". If the string "G0N" or "G1N" is omitted, then the default is "G0N". Thus the following are also valid: "11k2A", "1k12A", "37k4A". If k[Weight] is omitted, then the default is weight 2, so the following are valid and all refer to weight 2 modular forms on some Γ0(N): "11A", "37A", "65B". In order, possibilities for the isogeny class are as follows:
A, B, C, ..., Y, Z, AA, BB, CC, ..., ZZ, AAA, BBB, CCC, ....
This is essentially the notation used in [Cre97] for isogeny classes, though sometimes for levels ≤450 the ordering differs from that in [Cre97].
Suppose s is a valid label, and let M be the space of modular forms that contains ModularForm(s). Then ModularForm(s) is by definition Newforms(M)[i] where the isogeny class in the label s is the ith isogeny class. For example C corresponds to the 3rd isogeny class and BB corresponds to the 28th.
The Galois-conjugacy class(es) of newforms described by the string label. See the introduction for a description of the notation used for the label.
> Newforms("11A");
[*
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
*]
> Newforms("G0N11k2A");
[*
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
*]
> Newforms("G0N1k12A");
[*
q - 24*q^2 + 252*q^3 - 1472*q^4 + 4830*q^5 - 6048*q^6 - 16744*q^7 +
O(q^8)
*]
> Newforms("G1N17k2B");
[*
q + (-a^3 + a^2 - 1)*q^2 + (a^3 - a^2 - a - 1)*q^3 + (2*a^3 - a^2 +
2*a)*q^4 + (-a^3 - a^2)*q^5 + (-a^3 + a^2 - a + 1)*q^6 + (-a^3 + a^2 +
a - 1)*q^7 + O(q^8),
q + (-b^3 + b^2 - 1)*q^2 + (b^3 - b^2 - b - 1)*q^3 + (2*b^3 - b^2 +
2*b)*q^4 + (-b^3 - b^2)*q^5 + (-b^3 + b^2 - b + 1)*q^6 + (-b^3 + b^2 +
b - 1)*q^7 + O(q^8),
q + (-c^3 + c^2 - 1)*q^2 + (c^3 - c^2 - c - 1)*q^3 + (2*c^3 - c^2 +
2*c)*q^4 + (-c^3 - c^2)*q^5 + (-c^3 + c^2 - c + 1)*q^6 + (-c^3 + c^2 +
c - 1)*q^7 + O(q^8),
q + (-d^3 + d^2 - 1)*q^2 + (d^3 - d^2 - d - 1)*q^3 + (2*d^3 - d^2 +
2*d)*q^4 + (-d^3 - d^2)*q^5 + (-d^3 + d^2 - d + 1)*q^6 + (-d^3 + d^2 +
d - 1)*q^7 + O(q^8)
*]
> Newforms("G1N9k3B");
[*
1/3*(-5*zeta_6 - 2) + q + (4*zeta_6 + 1)*q^2 + q^3 + (20*zeta_6 -
15)*q^4 + (-25*zeta_6 + 26)*q^5 + (4*zeta_6 + 1)*q^6 + (-49*zeta_6 +
1)*q^7 + O(q^8),
1/3*(5*zeta_6 - 7) + q + (-4*zeta_6 + 5)*q^2 + q^3 + (-20*zeta_6 +
5)*q^4 + (25*zeta_6 + 1)*q^5 + (-4*zeta_6 + 5)*q^6 + (49*zeta_6 -
48)*q^7 + O(q^8)
*]
> Newforms("11k2A");
[*
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
*]
> Newforms("11A");
[*
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
*]
> Newforms("1k12A");
[*
q - 24*q^2 + 252*q^3 - 1472*q^4 + 4830*q^5 - 6048*q^6 - 16744*q^7 +
O(q^8)
*]
> Newforms("37k4A");
[*
q + a*q^2 + 1/8*(-a^3 - 9*a^2 - 26*a - 22)*q^3 + (a^2 - 8)*q^4 +
1/8*(13*a^3 + 85*a^2 + 50*a - 186)*q^5 + 1/8*(-3*a^3 - 27*a^2 - 38*a +
6)*q^6 + 1/4*(-19*a^3 - 119*a^2 - 30*a + 170)*q^7 + O(q^8),
q + b*q^2 + 1/8*(-b^3 - 9*b^2 - 26*b - 22)*q^3 + (b^2 - 8)*q^4 +
1/8*(13*b^3 + 85*b^2 + 50*b - 186)*q^5 + 1/8*(-3*b^3 - 27*b^2 - 38*b +
6)*q^6 + 1/4*(-19*b^3 - 119*b^2 - 30*b + 170)*q^7 + O(q^8),
q + c*q^2 + 1/8*(-c^3 - 9*c^2 - 26*c - 22)*q^3 + (c^2 - 8)*q^4 +
1/8*(13*c^3 + 85*c^2 + 50*c - 186)*q^5 + 1/8*(-3*c^3 - 27*c^2 - 38*c +
6)*q^6 + 1/4*(-19*c^3 - 119*c^2 - 30*c + 170)*q^7 + O(q^8),
q + d*q^2 + 1/8*(-d^3 - 9*d^2 - 26*d - 22)*q^3 + (d^2 - 8)*q^4 +
1/8*(13*d^3 + 85*d^2 + 50*d - 186)*q^5 + 1/8*(-3*d^3 - 27*d^2 - 38*d +
6)*q^6 + 1/4*(-19*d^3 - 119*d^2 - 30*d + 170)*q^7 + O(q^8)
*]
> Newforms("37k2");
[* [*
q - 2*q^2 - 3*q^3 + 2*q^4 - 2*q^5 + 6*q^6 - q^7 + O(q^8)
*], [*
q + q^3 - 2*q^4 - q^7 + O(q^8)
*], [*
3/2 + q + 3*q^2 + 4*q^3 + 7*q^4 + 6*q^5 + 12*q^6 + 8*q^7 + O(q^8)
*] *]