Modular Generators and \(q\)-Expansions#

In the genus 0 cases, the database model is just the projective line \({\bf P}^1\) and the uniformising parameter \(t=x/y\) (where \(x,y\) are the projective coordinates of \({\bf P}^1\)) is a modular function on \(X_0(N)\). We have normalised so that this function has a simple zero at the cusp \(0\) and a simple pole at the cusp \(\infty\) with \(q\)-expansion of the form \(q^{-1}+\ldots\) when \(N > 1\). For \(N=1\) we just take the \(j\)-invariant as our parameter.

In the elliptic and hyperelliptic cases, the model is a minimal Weierstrass equation \(y^2+h(x)y=f(x)\) and the \(x\) and \(y\) coordinate functions are modular functions on \(X_0(N)\). We have normalised so that one of the points at infinity of the model is the cusp \(\infty\), so \(x\) and \(y\) have poles there. In the elliptic cases, there is only one point at infinity. In the hyperelliptic cases, the other point at infinity is always the image of \(\infty\) under the hyperelliptic involution: \(\infty\) is never a Weierstrass point in these cases.

We sometimes refer to genus zero, elliptic and hyperelliptic curves by the semi-standard term subhyperelliptic. The models in the non-subhyperelliptic cases are ordinary projective and are sub-canonical images of \(X_0(N)\). This means that there are linearly-independent weight 2 cusp forms \(f_1,\ldots,f_r\) (which correspond to holomorphic differentials on \(X_0(N)\)) such that our model is the image of \(X_0(N)\) under the map \(z \mapsto [f_1(z):\ldots : f_r(z)]\) into \({\bf P}^{r-1}\).

As stated earlier, although we sometimes used Magma’s modular symbols machinery to compute a basis for forms when deriving models, we also worked out expressions for the modular functions \(t\), \(x\) and \(y\) and the forms \(f_i\) in terms of certain basic types. This gives the models a degree of independence from the modular symbol machinery and also allows for faster reconstruction of \(q\)-expansions of the generating functions/forms. We describe the basic types here. There is an intrinsic that the user may call to retrieve the information as to how the forms are built up and one to return the actual \(q\)-expansions up to any desired precision. In some cases, we have used the cusp forms associated to an elliptic curve of conductor \(N\). We would have liked to avoid this and maybe with a bit more work we may be able to find alternative expressions that avoid using them. In fact, we should be using more of the theta series associated to quaternion algebras (this was an oversight only discovered recently: we are currently only using the theta series attached to one isomorphism class of maximal order for each quaternion algebra). Leaving aside the forms associated to elliptic curves, the basic types that we have looked at are all classical. We could also have tried to use some other basic types like the generalised eta products of Y. Yang.

The basic types fall into a number of categories:

(i)

Dedekind eta products.

(ii)

Theta series of binary quadratic forms of various kinds and theta series of quaternion algebras.

(iii)

Weight 2 Eisenstein series of prime level.

(iv)

Weight two cusp forms of elliptic curves.

Dedekind eta products for level \(N\) are of the form \(\eta(d_1z)^{r_1}\eta(d_2z)^{r_2}\ldots\eta(d_nz)^{r_n}\) where the \(d_i\) run over a subset of the positive divisors of \(N\), the \(r_i\) are integers and \(\eta(z)\) is the Dedekind \(\eta\)-function which has \(q\)-expansion \(q^{1/24}\prod_{n=1}^\infty (1-q^n)\). If \(\sum r_i\) is even and \(\sum r_id_i\) and \(\sum r_i(N/d_i)\) are divisible by 24, the product gives a modular form of weight \((1/2)\sum r_i\) for \(\Gamma_0(N)\) with a certain character mod \(N\). The form only has zeroes and poles at cusps with order given by a formula depending on \(N\), \(r_i\) and \(d_i\). We use these products to give modular functions and weight 2 forms and occasionally weight one forms to be used in combination with weight one forms coming from theta series.

The theta series associated to binary quadratic forms come in several flavours.

If \(Q(x,y)=ax^2+bxy+cz^2\) (with \(a,b,c \in {\bf Z}, a>0\)) has discriminant \(-N\), then the usual theta series \(\theta_Q(z) = \sum_{(x,y)\in {\bf Z}^2} q^{Q(x,y)}\) is a weight one form of level \(N\) for the quadratic character given by the Jacobi symbol \(({-N\over .})\). The product of two of these gives a weight 2 integral form for \(\Gamma_0(N)\).

If \(N\equiv 1\) mod \(4\) and \(Q(x,y)=ax^2+bxy+cz^2\) is a form with discriminant \(-4N\) with \(a\) odd and \(b,c\) even, the function \(\theta^{(1)}_Q(z) = \sum_{(x,y)\in {\bf Z}^2, x odd}(-1)^yq^{Q(x,y)/4}\) is a weight one form of level \(N\) for the character \(({.\over N})\chi^a\) where \(\chi\) is the quartic character giving the action of \(\Gamma_0(1)\) on \(\eta(z)^6\). If \(Q_1,Q_2\) are two such forms, one of which has \(a\equiv 1\) mod \(4\) and \(a\equiv 3\) mod \(4\) for the other, then \(\theta^{(1)}_{Q_1}\theta^{(1)}_{Q_2}\) is a weight 2 integral form for \(\Gamma_0(N)\). Additionally, the function \(\theta^{(2)}_Q(z) = \sum_{(x,y)\in {\bf Z}^2, x odd}q^{Q(x,y)/4}\) is a weight one form of level \(2N\) for the character \(({.\over N})\chi^a\delta\) where \(\delta\) is the unique non-trivial character that factors through the quotient \(\Gamma_0(2N)/\Gamma_0(4N)\). Again, \(\theta^{(2)}_{Q_1}\theta^{(2)}_{Q_2}\) is a weight 2 form for \(\Gamma_0(2N)\) if the \(a\)s for \(Q_1\) and \(Q_2\) are non-congruent mod \(4\).

If \(N\equiv 3\) mod \(8\) and \(Q(x,y)=ax^2+bxy+cz^2\) is a form with discriminant \(-N\) (here \(a,b,c\) must all be odd), the function \(\theta^{(3)}_Q(z) = \sum_{(x,y)\in {\bf Z}^2, x odd}(-1)^yq^{Q(x,y)/2}\) is a weight one form of level \(N\) for the character \(({-N\over .})\chi\) where \(\chi\) is the quadratic character giving the action of \(\Gamma_0(1)\) on \(\eta(z)^{12}\). The product of any two of these gives a weight 2 integral form for \(\Gamma_0(N)\).

If \(N=p_1\ldots p_r\) is a product of an odd number of distinct primes, let \(H_N\) be the quaternion algebra over \({\bf Q}\) which is ramified precisely at \(\infty\) and the primes \(p_i\). Let \(O_N\) be a maximal order of \(H_N\), which is a \({\bf Z}\)-lattice of rank 4, and \(Q_N\) the positive-definite quadratic form on it given by the reduced norm \(Nm\) of \(H_N\). Then the theta function \(\theta_{Q_N}(z) = \sum_{x \in O_N } q^{Nm(x)}\) is a weight two integral form for \(\Gamma_0(N)\).

The weight 2 Eisenstein series of prime level \(p\) is the form \(pE_2(pz)-E_2(z)\), which is an integral form of weight 2 for \(\Gamma_0(p)\). Here \(E_2(z)\) is the usual normalised weight 2 Eisenstein series (which isn’t a modular form for any level) with \(q\)-expansion \(1-24q-72q^2-\ldots\). We usually normalise the prime level Eisenstein series by dividing by \(GCD(24,p-1)\) which is the GCD of its integral coefficients.

If \(E\) is an elliptic curve over \(Q\) of conductor \(N\), then the modular form \(f_E(z)\) associated to \(E\), which is returned by the call ModularForm(E), is a weight 2 cusp form for \(\Gamma_0(N)\).

We also use three standard operations on forms/functions.

If \(f(z)\) is a modular function on \(X_0(N)\) then \(D(f) = (1/2\pi i)(df/dz)\) is a weight 2 form for \(\Gamma_0(N)\).

If \(f(z)\) is a form/function on \(X_0(M)\) and \(d\) is a positive integer dividing \(N/M\) then \(f(dz)\) is a form/function on \(X_0(N)\).

If \(f\) is a form for \(\Gamma_0(N)\) and \(\chi\) is the quadratic character with conductor \(d\) where \(|d|^2\) divides \(N\), then the twisted form \(f\otimes\chi\) is also a form for \(\Gamma_0(N)\) where if \(f\) has the \(q\)-expansion \(\sum a_nq^n\) then \(f\otimes\chi\) has \(q\)-expansion \(\sum a_n\chi(n)q^n\).

The basic types are forms or functions of types (i)-(iv), possibly operated on by one of the above 3 operations. Basic functions are functions of basic type or quotients of forms of basic type of the same weight. We build modular functions as rational functions of basic functions. We build modular forms of weight 2 as linear combinations of weight 2 forms of basic type or products of modular functions with weight 2 forms of basic type. We give some examples below.

qExpansionExpressions(N): RngIntElt#

This procedure prints out a mini-program that is used to compute the modular functions that correspond to \(t\) or to \(x,y\) on \(X_0(N)\) in the subhyperelliptic cases or the weight 2 cusp forms \(f_1,\ldots,f_r\) on \(X_0(N)\) in the other cases. These give expressions for the forms/functions in terms of forms/functions of basic type. The format of the mini-program is as follows.

There are a sequence of statements. Each except the last is of the form \(v = \langle expr\rangle\) where \(v\) is a variable name, \(\langle expr\rangle\) is an expression and the statement assigns the value of the expression (a modular form or function on \(X_0(N)\)) to variable \(v\). Each expression is a string of terms separated by binary arithmetic operators \(^ * / + -\) which have their usual meaning, are listed in precedence order and evaluate left to right for operators of the same precedence. There may also be subexpressions in () brackets. Subexpressions in brackets are evaluated first and replaced with their value, inner bracketed subexpressions being evaluated before outer ones. Terms are of one of the following types, possibly modified by an operator:

(i)

An integer. This either multiplies a form/function, is an exponent for powering or gives a constant function.

(ii)

\(q\). This is just \(e^{2\pi i z}\), the ‘q’ of the \(q\)-expansion.

(iii)

A variable that has previously been assigned to.

(iv)

An eta product. \(e\{\langle d_1\ r_1\rangle\langle d_2\ r_2\rangle\ldots\langle d_n\ r_n\rangle\}\) represents the eta product \(\eta(d_1z)^{r_1}\eta(d_2z)^{r_2}\ldots\eta(d_nz)^{r_n}\).

(v)

Binary theta functions as described in the introduction. For a positive-definite binary quadratic form \(Q(x,y)=Ax^2+Bxy+Cy^2\),

\(th0\{A\ B\ C\}\) is the usual theta series of \(Q\).

\(th1\{A\ B\ C\}\) is \((1/2)q^{-a/4}\theta^{(1)}_Q\) where \(a\) is \(A\) mod 4. This has \(q\)-integral \(q\)-expansion.

\(th2\{A\ B\ C\}\) is \((1/2)q^{-a/4}\theta^{(2)}_Q\) where \(a\) is \(A\) mod 4. This has \(q\)-integral \(q\)-expansion.

\(th3\{A\ B\ C\}\) is \((1/2)q^{-1/2}\theta^{(3)}_Q\). This has \(q\)-integral \(q\)-expansion.

(vi)

Theta functions of quaternion algebras as described in the introduction. \(thQ\{N\}\) represents the weight 2 theta function attached to a maximal order of the quaternion algebra of level \(N\), where \(N\) is a product of an odd number of distinct primes. The notation is deficient here. The theta series depends on the isomorphism class of the maximal order chosen. Currently, we are only using the maximal order returned by Magma in the call MaximalOrder(QuaternionAlgebra(N)).

(vii)

Eisenstein series. \(E\{p\}\) represents the weight 2 normalised Eisenstein series of prime level \(p\), \((pE_2(pz)-E_2(z))/GCD(24,p-1)\).

(viii)

Cusp forms from elliptic curves. \(f\{a_1\ a_2\ a_3\ a_4\ a_6\}\) represents the weight two newform associated to the elliptic curve over Q with equation \(y^2+a_1xy+a_3y=x^3+a_2x^2+a_4x+a_6\).

Modifying operators are

(i)

\(D\). \(D(f)\) is \((1/2\pi i)(df/dz)\), where \(f\) is a modular function on \(X_0(N)\).

(ii)

\([d]\). \(d\) is a positive integer. If \(f\) represents a form or function \(f(z)\), then \(f[d]\) represents \(f(dz)\).

(iii)

\(\langle d\rangle\). If \(f\) is a form, \(f\langle d\rangle\) represents the form twisted by the quadratic character of conductor \(d\).

The last line of the mini-program is of the form \([t,1]\) if \(X_0(N)\) is of genus 0, \([x,y,1]\) if \(X_0(N)\) is elliptic or hyperelliptic, and \([f_1,\ldots,f_r]\) otherwise, where \(t,x,y,f_i\) are variables that were assigned to in earlier lines. These give the generating functions/forms for the \(X_0(N)\) model.

qExpansionsOfGenerators(N, R, r): RngIntElt, RngSerLaur, RngIntElt -> SeqEnum#

Returns \(q\)-expansions to precision \(r\) as Laurent series in the Laurent series ring \(R\) over Q for the sequence of modular forms/functions of level \(N\) that define the small modular curve database model of \(X_0(N)\). As described in the introduction, the return sequence is of the form \([t]\) if \(X_0(N)\) is of genus 0, \([x,y]\) if \(X_0(N)\) is elliptic or hyperelliptic, and \([f_1,\ldots,f_r]\) otherwise. Here \(t,x\) and \(y\) are Laurent series giving the \(q\)-expansions of functions which will have poles at the cusp \(\infty\), so have negative power terms, and the \(f_i\) will actually be power series giving the \(q\)-expansions of weight 2 cusp forms.

The \(q\)-expansions are computed from the expressions which are given in the mini-program output by qExpansionExpressions(N), generating the forms/functions from ones of basic type for which there are fast routines to compute \(q\)-expansions.

Example: Q Exps Ex Sm Mod Crvs (ex-4be444)#

We give some examples of the mini-programs for various levels

> qExpansionExpressions(8); //genus 0 case
x=e{<1 4><2 -2><4 2><8 -4>}
[x,1]
> qExpansionExpressions(15); //genus 1 case
F=e{<1 1><3 1><5 1><15 1>}
t=e{<1 -3><3 3><5 3><15 -3>}
s=-D(t)/F
x=(t^2-5*t-3+s)/2
y=(t^3-8*t^2-4*t+3+s*(t-3))/2
[x,y,1]
> qExpansionExpressions(30); //hyperelliptic case
F=e{<1 -1><2 3><3 1><5 1><6 -1><10 -1><15 -1><30 3>}
x=e{<1 2><2 -2><3 -1><5 -1><6 1><10 1><15 2><30 -2>}
s=-D(x)/F
y=(s+x^4+x^3+x^2)/2
[x,y,1]
> qExpansionExpressions(64); //genus 3 case
F1=e{<4 2><8 2>}
F2=F1<-8>
[(F2-F1)/4,(F2+F1)/2,F1[2]]
> qExpansionExpressions(53); //genus 4 case
t1=th1{1 2 54}
t2=th1{3 2 18}
t3=th1{9 2 6}
F1=q*t1*t2
F2=q*t2*t3
F3=(13*thQ{53}-E{53})/18
F4=f{1 -1 1 0 0}
[F1,(5*F1-3*F2-F3-F4)/2,-4*F1+2*F2+F3,-4*F1+F2+F3]
> qExpansionExpressions(63); //genus 5 case
F1=(th0{1 1 16}-th0{4 1 4})*th0{2 1 8}/2
F2=q*th1{1 2 22}*th1{3 6 10}
F3=F2[3]
F4=e{<3 2><21 2>}
[(F1-F2-F3+F4)/2,(F1-F2-F3-F4)/2,F3]
> R<q> := LaurentSeriesRing(Rationals());
> qExpansionsOfGenerators(49,R,30); //genus 1 case
[
    q^-2 - q^-1 + 1 + q^3 + q^5 - q^10 - q^13 + q^20 + q^24 + O(q^31),
    q^-3 - 2*q^-2 + 2*q^-1 - 1 - q + q^2 - 2*q^3 + q^4 - 2*q^5 - q^9 + 2*q^10
        + q^11 + 2*q^13 + q^15 + q^16 - 2*q^20 - q^22 - q^23 - 2*q^24 - q^25 -
        q^29 + q^30 + O(q^31)
]

Run in calculator