Design notes¶
The implementation depends on the fact that we have dimension formulas
(see dims.py
) for spaces of modular forms with character, and new
subspaces, so that we don’t have to compute
The internal basis of
First Block: Cuspidal Subspace
Second Block: Eisenstein Subspace
Cuspidal Subspace: Block for each level `M` dividing `N`, from highest
level to lowest. The block for level `M`
contains the images at level `N` of the
newsubspace of level `M` (basis, then
basis(q**d), then basis(q**e), etc.)
Eisenstein Subspace: characters, etc.
Since we can compute dimensions of cuspidal subspaces quickly and easily, it should be easy to locate any of the above blocks. Hence, e.g., to compute basis for new cuspidal subspace, just have to return first n standard basis vector where n is the dimension. However, we can also create completely arbitrary subspaces as well.
The base ring is the ring generated by the character values (or
bigger). In MAGMA the base was always