Newforms#

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).

NumberOfNewformClasses(M : parameters): ModFrm -> RngIntElt#
Proof: BoolElt                    Default: true

The number of Galois conjugacy-classes of newforms associate to the modular forms space \(M\), which must have base ring \({\mathbb{Z}}\) or \({\mathbb{Q}}\). By “associated to” we mean that the newform lies in \(M{\otimes}{\mathbb{C}}\).

Newform(M, i, j : parameters): ModFrm, RngIntElt, RngIntElt -> ModFrmElt#
Proof: BoolElt                    Default: true

The \(j\)th Galois-conjugate newform in the \(i\)th Galois-orbit of newforms in the space of modular forms \(M\), which must have base ring \({\mathbb{Z}}\) or \({\mathbb{Q}}\).

Newform(M, i : parameters): ModFrm, RngIntElt -> ModFrmElt#
Proof: BoolElt                    Default: true

The first Galois-conjugate newform in the \(i\)th orbit in the space of modular forms \(M\), which must have base ring \({\mathbb{Z}}\) or \({\mathbb{Q}}\).

Newforms(M : parameters): ModFrm -> List#
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.

Newforms(I, M): [Tup], ModFrm -> ModFrm#

Use this intrinsic to find the newforms associated to the space of modular forms \(M\) with prespecified eigenvalues. Here \(I\) is a sequence \([\langle p_1, f_1(x)\rangle,...,\langle p_n,f_n(x)\rangle]\) 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 \(\sum a_n q^n\) in \(M\) such that \(f_n(a_{p_n})=0\). (This intrinsic only works when \(M\) is cuspidal and defined over \({\mathbb{Q}}\) or \({\mathbb{Z}}\).)

NewformDecomposition(M): ModFrm -> List#

Given a newspace \(M\), returns representatives of each of the Galois orbits of newforms in \(M\).

Example: Newforms (ex-ecf1ff)#

We compute the newforms in \(M_5(\Gamma_1(8))\).

> 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));
true

Run in calculator

The following example demonstrates picking out a newform in \(S_2(\Gamma_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)
*] *]

Run in calculator

Labels#

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 \(\Gamma_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 [Cremona, 1997] for isogeny classes, though sometimes for levels \(\leq 450\) the ordering differs from that in [Cremona, 1997].

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 \(i\)th isogeny class. For example C corresponds to the \(3\)rd isogeny class and BB corresponds to the \(28\)th.

Newforms(label): MonStgElt -> ModFrmElt#

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.

Example: Newform Labeling (ex-5d3f25)#

We give many examples of constructing newforms using labels.

> 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)
*] *]

Run in calculator