Introduction

The Small Modular Curve database is a database of simple models over the rational numbers for the X0(N) modular curves along with the standard automorphisms, cusps and non-cuspidal rational points in the positive genus cases, the various projection maps from X0(N) -> X0(M) when M divides N and expressions for standard functions (j(z), j(Nz)) and forms (e.g. E4, E6) in terms of rational functions or k-differentials on the model. We refer to them as "small", because the models are of low degree, are defined by reasonably sparse polynomials with small integer coefficients, and are non-singular or have only a few simple singularities.

Because the Magma type of the model may be CrvEll, CrvHyp, CrvPln or just general Crv and it is not possible for a type to extend different subtypes of Crv, we have not introduced a special type like CrvMod (or used this type) for small modular curves. The modular curve component of the arguments to most of the intrinsics consists of a projective curve, which should be a base change of the model over (Q) to a field of characteristic zero, and the level N. This is a little "clunky" but hopefully the user won't find it too awkward. For efficiency, there is currently no initial check that the curve argument really is a base change of the database model, which the user can obtain via the SmallModularCurve call. The call will almost certainly result in an error if this is not the case.

For simplicity, in the initial implementation, the intrinsics require the modular curve to be defined over a field of characteristic zero, although the models are all defined by polynomials with integral coefficients which reduce nicely for primes not dividing the level. Again, we do not check this condition in all intrinsics: the user may find that if he carries out a mod p reduction on the database model himself and uses it as the argument to some of the intrinsics, they may still work.

V2.28, 13 July 2023