Modular Generators and q-Expansions

In the genus 0 cases, the database model is just the projective line (P)1 and the uniformising parameter t=x/y (where x, y are the projective coordinates of (P)1) is a modular function on X0(N). We have normalised so that this function has a simple zero at the cusp 0 and a simple pole at the cusp ∞ with q-expansion of the form q - 1 + ... 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 y2 + h(x)y=f(x) and the x and y coordinate functions are modular functions on X0(N). We have normalised so that one of the points at infinity of the model is the cusp ∞, 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 ∞ under the hyperelliptic involution: ∞ 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 X0(N). This means that there are linearly-independent weight 2 cusp forms f1, ..., fr (which correspond to holomorphic differentials on X0(N)) such that our model is the image of X0(N) under the map z |-> [f1(z): ... : fr(z)] into (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 fi 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 η(d1z)r1η(d2z)r2 ... η(dnz)rn where the di run over a subset of the positive divisors of N, the ri are integers and η(z) is the Dedekind η-function which has q-expansion q1/24n=1^∞(1 - qn). If ∑ri is even and ∑ridi and ∑ri(N/di) are divisible by 24, the product gives a modular form of weight (1/2)∑ri for Γ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, ri and di. 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)=ax2 + bxy + cz2 (with a, b, c ∈(Z), a>0) has discriminant -N, then the usual theta series θQ(z) = ∑_((x, y)∈(Z)2) qQ(x, y) is a weight one form of level N for the quadratic character given by the Jacobi symbol ((-N/.)). The product of two of these gives a weight 2 integral form for Γ0(N).

If N ≡ 1 mod 4 and Q(x, y)=ax2 + bxy + cz2 is a form with discriminant -4N with a odd and b, c even, the function θ(1)Q(z) = ∑_((x, y)∈(Z)2, x odd)( - 1)yqQ(x, y)/4 is a weight one form of level N for the character ((./N))χa where χ is the quartic character giving the action of Γ0(1) on η(z)6. If Q1, Q2 are two such forms, one of which has a ≡ 1 mod 4 and a ≡ 3 mod 4 for the other, then θ(1)Q1θ(1)Q2 is a weight 2 integral form for Γ0(N). Additionally, the function θ(2)Q(z) = ∑_((x, y)∈(Z)2, x odd)qQ(x, y)/4 is a weight one form of level 2N for the character ((./N))χaδ where δ is the unique non-trivial character that factors through the quotient Γ0(2N)/Γ0(4N). Again, θ(2)Q1θ(2)Q2 is a weight 2 form for Γ0(2N) if the as for Q1 and Q2 are non-congruent mod 4.

If N ≡ 3 mod 8 and Q(x, y)=ax2 + bxy + cz2 is a form with discriminant -N (here a, b, c must all be odd), the function θ(3)Q(z) = ∑_((x, y)∈(Z)2, x odd)( - 1)yqQ(x, y)/2 is a weight one form of level N for the character ((-N/.))χ where χ is the quadratic character giving the action of Γ0(1) on η(z)12. The product of any two of these gives a weight 2 integral form for Γ0(N).

If N=p1 ... pr is a product of an odd number of distinct primes, let HN be the quaternion algebra over (Q) which is ramified precisely at ∞ and the primes pi. Let ON be a maximal order of HN, which is a (Z)-lattice of rank 4, and QN the positive-definite quadratic form on it given by the reduced norm Nm of HN. Then the theta function θQN(z) = ∑x ∈ON qNm(x) is a weight two integral form for Γ0(N).

The weight 2 Eisenstein series of prime level p is the form pE2(pz) - E2(z), which is an integral form of weight 2 for Γ0(p). Here E2(z) is the usual normalised weight 2 Eisenstein series (which isn't a modular form for any level) with q-expansion 1 - 24q - 72q2 - ... . 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 fE(z) associated to E, which is returned by the call ModularForm(E), is a weight 2 cusp form for Γ0(N).

We also use three standard operations on forms/functions.

If f(z) is a modular function on X0(N) then D(f) = (1/2π i)(df/dz) is a weight 2 form for Γ0(N).

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

If f is a form for Γ0(N) and χ is the quadratic character with conductor d where |d|2 divides N, then the twisted form f tensor χ is also a form for Γ0(N) where if f has the q-expansion ∑anqn then f tensor χ has q-expansion ∑anχ(n)qn.

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 X0(N) in the subhyperelliptic cases or the weight 2 cusp forms f1, ..., fr on X0(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 = < expr > where v is a variable name, < expr > is an expression and the statement assigns the value of the expression (a modular form or function on X0(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 e2π i z, the 'q' of the q-expansion.
(iii)
A variable that has previously been assigned to.
(iv)
An eta product. e{< d1 r1 >< d2 r2 > ... < dn rn >} represents the eta product η(d1z)r1η(d2z)r2 ... η(dnz)rn.
(v)
Binary theta functions as described in the introduction. For a positive-definite binary quadratic form Q(x, y)=Ax2 + Bxy + Cy2,
th0{A B C} is the usual theta series of Q.
th1{A B C} is (1/2)q - a/4θ(1)Q where a is A mod 4. This has q-integral q-expansion.
th2{A B C} is (1/2)q - a/4θ(2)Q where a is A mod 4. This has q-integral q-expansion.
th3{A B C} is (1/2)q - 1/2θ(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, (pE2(pz) - E2(z))/GCD(24, p - 1).
(viii)
Cusp forms from elliptic curves. a1 a2 a3 a4 a6 represents the weight two newform associated to the elliptic curve over Q with equation y2 + a1xy + a3y=x3 + a2x2 + a4x + a6.

Modifying operators are

(i)
D. D(f) is (1/2π i)(df/dz), where f is a modular function on X0(N).
(ii)
[d]. d is a positive integer. If f represents a form or function f(z), then f[d] represents f(dz).
(iii)
< d >. If f is a form, f< d > 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 X0(N) is of genus 0, [x, y, 1] if X0(N) is elliptic or hyperelliptic, and [f1, ..., fr] otherwise, where t, x, y, fi are variables that were assigned to in earlier lines. These give the generating functions/forms for the X0(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 X0(N). As described in the introduction, the return sequence is of the form [t] if X0(N) is of genus 0, [x, y] if X0(N) is elliptic or hyperelliptic, and [f1, ..., fr] otherwise. Here t, x and y are Laurent series giving the q-expansions of functions which will have poles at the cusp ∞, so have negative power terms, and the fi 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 SmallModCrv_q_exps_ex_sm_mod_crvs (H138E6)

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=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)
]
V2.28, 13 July 2023