Modular Curves of Given Level and Genus

The intrinsics described in this section are designed to construct curves C over Q of genus at least 2 which are images of X1(N) (or X0(N)) under a morphism π: X1(N) -> C defined over Q. Such curves will be referred to as modular curves. The code uses some of the ideas and methods from the papers [GJG03], [BGJGP05] and [GJO10].

The morphism π induces an isogeny π * from the Jacobian of C, Jac(C) onto a Q-rational abelian subvariety B of J1(N) (or J0(N)), i.e. a Q-rational modular abelian variety of dimension g, the genus of C. The space of holomorphic differentials of Jac(C) identified with those of C pull back under π * to the holomorphic differentials of B which can be identified with the space of weight 2 cusp forms associated to B.

If f1, ..., fg is a Q-basis of this space, then these forms will satisfy the canonical relations for some canonical embedding of C in the non-hyperelliptic case. Conversely, if a basis of the space of cusp forms for a Q-rational modular abelian variety B of dimension g satisfies the polynomial relations defining a canonical curve C of genus g, then C is a modular curve, but the pullback of the space of holomorphic differentials under the obvious map π: z |-> [f1(z):f2(z): ... : fg(z)] from X1(N) to C may NOT give the space of differentials < f1, ..., fg > and Jac(C) may be isogenous to a different modular abelian subvariety of J1(N) to B.

In the hyperelliptic case, criteria for the pullback of the differentials of the curve C to give precisely the space of forms of a particular modular abelian variety B are given in [GJG03] and [BGJGP05], provided that B lies in the new part of J1(N). In the genus 3 non-hyperelliptic case, a simple explicit criterion for Jac(C) to pull back to B is given in [GJO10].

Modular curves C such that the pullback π * (Jac(C)) lies in the new part of J1(N) (or J0(N)) are referred to as new modular curves.

Intrinsics are provided that determine all of the new modular hyperelliptic curves or all of the new modular genus 3 non-hyperelliptic curves of X1(N) (or X0(N)) for a given level N. There are also intrinsics that determine whether a given modular abelian subvariety B corresponds to a hyperelliptic or genus 3 non-hyperelliptic curve C and give the equations of C (as a Weierstrass model or canonical model, respectively) in the affirmative case.

In future releases it is planned to add intrinsics to deal with non-hyperelliptic modular curves of genus greater than 3 and to add more functionality to cover non-new cases.

SetVerbose("ModularCurve", v) : MonStgElt, RngIntElt ->
Set the printing level for verbose output for the following intrinsics. Currently the legal values for v are true, false, 0, 1, 2 (false is the same as 0, and true is the same as 1).
NewModularHyperellipticCurves(N, g) : RngIntElt, RngIntElt -> SeqEnum
    check: BoolElt                      Default: false
    prec: RngIntElt                     Default: 100
    gamma: RngIntElt                    Default: 1
For level N, this function returns a list of all hyperelliptic curves of genus g ≥2 which are new modular curves for X1(N) if parameter gamma equals 1 (the default) or X0(N), if gamma equals 0.

A hyperelliptic curve is returned as a univariate polynomial f(x) such that y2=f(x) is a Weierstrass equation of the actual curve.

The parameter prec (default 100) is the precision to which modular forms are expanded in the computations. If parameter check (default false) is true, the forms are actually computed to a precision slightly in excess of the precision prec1 needed to guarantee that polynomial relations on them (of the degrees that are used in the computations) vanish if they vanish to precision prec1.

NewModularHyperellipticCurve(B) : [ModSym] -> BoolElt, RngUPol
    check: BoolElt                      Default: false
    prec: RngIntElt                     Default: 100
    gamma: RngIntElt                    Default: 1
Given a sequence B of distinct modular abelian subvarieties of J1(N)new, presented as subspaces of modular symbols, this function true if the modular abelian variety M which is the direct sum of the B corresponds exactly to a hyperelliptic curve C as described in the introduction (M is isogenous to Jac(C)). If so, a univariate polynomial f(x) is also returned such that y2=f(x) is a Weierstrass equation for C.

The parameters check and prec have the same meaning as in the previous intrinsic. The parameter gamma is only relevant if check is true, is 1 by default, and should only be set to 0 if all of the B are abelian subvarieties of J0(N). It is then used to get sharper bounds for the precision required for the q-expansions.

NewModularHyperellipticCurve(F) : [RngSerPowElt] -> BoolElt, RngUPol
This is a variant on the intrinsic directly above where, instead of the sequence of modular abelian subvarieties as argument, the sequence of q-expansions of the basis of weight 2 forms for the modular abelian subvariety M is given instead.
ModularHyperellipticCurve(B) : [ModSym] -> BoolElt, RngUPol
    prec: RngIntElt                     Default: 100
Given a sequence B of distinct modular abelian subvarieties of J1(N)new, where the direct sum modular abelian variety M that B defines does not have to lie in the new part J1(N)new, the function determines whether the basis of the differentials (forms) of M satisfy the correct relations so as to arise from a hyperelliptic curve C of genus g. If so, the intrinsic also returns a univariate polynomial f(x), such that y2=f(x) is a Weierstrass equation for C. The difference between this and the new case is that, although C is a modular curve, it is not guaranteed that Jac(C) is isogenous to M: it may be isogenous to a different modular abelian subvariety of J1(N).

The parameter prec (default 100) is the precision to which modular forms are expanded in the computations.

ModularHyperellipticCurve(F) : [RngSerPowElt] -> BoolElt, RngUPol
This is a variant on the intrinsic immediately above where, instead of a sequence of modular abelian varieties B with direct sum M passed as the argument, a sequence of q-expansions of the basis of weight 2 cusp forms of such an M is given instead.
NewModularNonHyperellipticCurvesGenus3(N) : RngIntElt -> SeqEnum
    check: BoolElt                      Default: false
    prec: RngIntElt                     Default: 100
    gamma: RngIntElt                    Default: 1
Given an integer N, this function returns a list of all non-hyperelliptic curves of genus 3 which are new modular curves, for X1(N) if the parameter gamma equals 1 (the default), or for X0(N) if gamma equals 0.

The parameter prec (default 100) is the precision to which modular forms are computed to in the computations. If parameter check (default false) is true, the forms are actually computed to a little over the precision prec1 needed to check that polynomial relations on them (of the degrees that are used in the computations) are definitely guaranteed to vanish if they vanish to precision prec1.

NewModularNonHyperellipticCurveGenus3(B) : [ModSym] -> BoolElt, RngMPolElt
    check: BoolElt                      Default: false
    prec: RngIntElt                     Default: 100
    gamma: RngIntElt                    Default: 1
Given a sequence B of distinct modular abelian subvarieties of J1(N)new, where the direct sum modular abelian variety M that B defines does not have to lie in the new part J1(N)new, the function determines whether the basis of the differentials (forms) of M satisfy the correct relations so as to arise from a non-hyperelliptic curve C of genus 3. If so, the intrinsic also returns a a defining polynomial for the canonical image of C. The parameters check and prec have the same meaning as for the intrinsic NewModularHyperellipticCurves. The parameter gamma, which is only relevant if check is true, and is 1 by default, may be set to 0 if M is an abelian subvariety of J0(N) when sharper bounds for the required precision of q-expansions will be used. This intrinsic is similar to NewModularHyperellipticCurve(B).
NewModularNonHyperellipticCurveGenus3(F) : [RngSerPowElt] -> BoolElt, RngMPolElt
This is a variant on the intrinsic NewModularNonHyperellipticCurveGenus3(B) above where, instead of the sequence of modular abelian varieties B with direct sum M passed as the argument, a sequence F of q-expansions of the basis of weight 2 cusp forms of such an M is given instead.
ModularNonHyperellipticCurveGenus3(F) : [RngSerPowElt] -> BoolElt, RngMPolElt
This is the same as the intrinsic NewModularNonHyperellipticCurveGenus3(F) immediately preceding except that it is not required that the modular abelian variety M which corresponds to F lies in the new part J1(N)new. This may be used to search for non-new non-hyperelliptic genus 3 curves.

Example CrvMod_jim_ex_mod_crvs_hyp (H137E7)

We give some examples of the use of these intrinsics.

The modular curve X1(13) is of genus 2, therefore hyperelliptic, and the space of modular forms of weight 2 for Γ1(13) is generated by an unique newform f of nebentypus a Dirichlet character of order 6, such that the modular abelian variety attached to f, Af, is Q-isogenous to J1(13):

> chi := DirichletGroup(13,CyclotomicField(6)).1; //order 6 character mod 13
> A13:=Af(chi)[1];
> NewModularHyperellipticCurve([A13]);
true x^6 + 4*x^5 + 6*x^4 + 2*x^3 + x^2 + 2*x + 1
> f13:=qIntegralBasis(A13,100);
> NewModularHyperellipticCurve(f13);
true x^6 + 4*x^5 + 6*x^4 + 2*x^3 + x^2 + 2*x + 1
> SetVerbose("ModularCurve",1);
> NewModularHyperellipticCurve([A13]:check:=true);
Checking ...
          ... bound =113
true x^6 + 4*x^5 + 6*x^4 + 2*x^3 + x^2 + 2*x + 1

Let us compute all the new modular hyperelliptic curves parameterized by X0(80):

> NewModularHyperellipticCurves(80,0: gamma:=0);
     Candidates:=3
     All the curves
1 2 3
[
    x^5 + 2*x^4 - 26*x^3 - 132*x^2 - 231*x - 142
]

Finally, we calculate the new modular hyperelliptic curves parameterized by X1(80) (the default):

> SetVerbose("ModularCurve",0);
> NewModularHyperellipticCurves(80,0);
[
    x^5 + 2*x^4 - 26*x^3 - 132*x^2 - 231*x - 142,
    x^5 - 2*x^4 - 2*x^3 + 20*x^2 - 47*x + 30,
    x^7 - 4*x^6 - 4*x^5 + 39*x^4 - 64*x^3 + 40*x^2 - 8*x,
    x^7 + 2*x^5 + 7*x^4 - 4*x^3 - 20*x^2 - 16*x - 4
]

Example CrvMod_jim_ex_mod_crvs_jeon (H137E8)

In this exercise, an interesting example from [JK07] is presented.

> S:=CuspidalSubspace(ModularSymbolsH(21,[1,8,13,20],2,+1));
> S;
Modular symbols space of level 21, weight 2, and dimension 3 over Rational Field
(multi-character)
> ModularHyperellipticCurve([S]);
true x^8 - 6*x^6 + 4*x^5 + 11*x^4 - 24*x^3 + 22*x^2 - 8*x + 1
The above curve is the unique hyperelliptic intermediate modular curve XΔ(N) between X1(N) and X0(N), where Δ is a subgroup of ((Z)/N(Z)) * /{∓ 1} and XΔ(N) is the modular curve associated to some congruence subgroup of PSL2((Z)) attached to Δ. In fact, the above hyperelliptic curve is the new modular curve denoted by CA_(21A_({0, 2})) in [BGJGP05].

Example CrvMod_jim_ex_mod_crvs_jeon (H137E9)

Given a modular abelian subvariety of J0(97), we determine whether it corresponds to a new modular non-hyperelliptic curve of genus 3 and level 97:

> M:=ModularSymbols(97,2,1);
> NN:=SortDecomposition(NewformDecomposition(NewSubspace(CuspidalSubspace(M))));
> NN;
[
    Modular symbols space for Gamma_0(97) of weight 2 and dimension 3 over
    Rational Field,
    Modular symbols space for Gamma_0(97) of weight 2 and dimension 4 over
    Rational Field
]
> A97:=NN[1];
> NewModularNonHyperellipticCurveGenus3([A97]);
true -x^2*y^2 + x*y^3 + x^3*z + x*y^2*z - 5*x^2*z^2 + 3*x*y*z^2 - 3*y^2*z^2 +
  6*x*z^3 - y*z^3 - 2*z^4

Example CrvMod_jim_ex_mod_crvs_gen3 (H137E10)

We calculate all of the new modular non-hyperelliptic curves of genus 3 parameterized by X1(20):

> NewModularNonHyperellipticCurvesGenus3(20);
[
    -x^2*y^2 + x*y^3 + x^3*z - 3*x^2*z^2 + 4*x*z^3 - 2*z^4
]

We now construct an example of a non-new modular non-hyperelliptic curve of genus 3:

> S1:=ModularSymbols(178,2,1);
> N1:=SortDecomposition(NewformDecomposition(NewSubspace(CuspidalSubspace(S1))));
> A:=N1[3];A;
Modular symbols space for Gamma_0(178) of weight 2 and dimension 2 over
Rational Field
> S2:=ModularSymbols(89,2,1);
> N2:=SortDecomposition(NewformDecomposition(NewSubspace(CuspidalSubspace(S2))));
> B:=N2[1];B;
Modular symbols space for Gamma_0(89) of weight 2 and dimension 1 over
Rational Field
> fA:=qIntegralBasis(A,100);
> fB:=qIntegralBasis(B,100);
> q := Universe(fB).1;
> fB2:=&+[Coefficient(fB[1],k)*q^(2*k) : k in [1..99]];
> g:=fB[1]+2*fB2;
> ModularNonHyperellipticCurveGenus3([g,fA[1],fA[2]]);
true -x^4 + 2*x^2*y^2 - y^4 + 8*x^2*y*z + 8*y^3*z - 6*x^2*z^2 - 38*y^2*z^2 +
    24*y*z^3 + 7*z^4
>
The above curve is denoted by C89A178C in [GJO10]. Its jacobian is (Q)-isogenous to A x B.
V2.28, 13 July 2023