Extending magma's implementation of modular symbols to arbitrary congruence subgroups
For the application of finding smooth models of modular curves, please refer to SmoothModelsREADME.md
Currently magma's implementation only supports modular symbols for the subgroups Gamma0(N), Gamma1(N) of PSL2(Z) (It also supports modular symbols for Gamma(N) by embedding it in Gamma0(N^2)) The goal of this extension is to support arbitrary congruence subgroups of PSL2(Z), given either by their generators or by their image in PSL(Z/NZ) (where N is the level).
Simply run the following line in magma: (from the main directory - ModFrmGL2) AttachSpec("ModFrmGL2.spec");
This attaches the package to your runnning magma session.
In my view there are three development vectors:
The package supports construction of a space of modular symbols from a subgroup G of GL(Z/NZ) of real type with surjective determinant, and which includes -I, or by a subgroup of PSL2(Z) given by generators, or arbirtrary sequence of intersection and conjugation of standard subgroups.
The package supports construction of such a space for a given representation of the finite group A/G, where A is a maximal subgroup in N(G) - the normalizer of G in PSL2(Z), such that the quotient is abelian.
The package also supports computation of the boundary map and cuspidal subspace for these.
The package supports computation of Hecke operators away from the level, and in some cases, also the Hecke operators at primes dividing the level.
The package supports NewformDecomposition
The package supports q-expansions of eigenforms
At the moment, there is no support for odd characters (i.e. -I not in group)
At the moment, there is no support for groups not of real type, or with non-surjective determinant. Given a subgroup of GL2(ZZ/ N ZZ), it will try to conjugate into a subgroup of real type, and to find a model with surjective determinant.
At the moment, finding elliptic invariants and equations is not supported
At the moment, q-expansions of Eisenstein modular forms are not supported
The main bottleneck at the moment is the computation of the Hecke operators at primes dividing the level. This is because we use Farey symbols to find generators for the gorup in order to conjugate it.
All tests are implemented in "tests.m" and could be run using the procedure DoTests(num); Currently implemented are:
Tests to add: