Creation of Full Cuspidal Spaces

In the current implementation only cusp forms are supported. In future releases it will be possible to compute Eisenstein series, and create the full space of Hilbert modular forms of given weight and level.

HilbertCuspForms(F, N, k) : FldNum, RngOrdIdl, SeqEnum -> ModFrmHil
HilbertCuspForms(F, N) : FldNum, RngOrdIdl -> ModFrmHil
    QuaternionOrder: AlgAssVOrd         Default: 
This creates the space of Hilbert modular forms over the field F (a number field or the rationals) on Γ0(N) with weight k. Here the level N should be an ideal in the maximal order of F, and k should be a sequence of (deg)(F/Q) integers, all at least 2 and all of the same parity. If not specified, the weight is taken to be parallel weight 2, ie. [2, 2, ..., 2].

Computations in the space will be done by realising it as a space of automorphic forms on an order in a suitable quaternion algebra (as explained in the introduction). This choice is made automatically (in most cases), when it is needed, and is hidden from the user; however the user may specify the order to be used by providing the optional argument QuaternionOrder. The quaternion algebra may be definite (ramified at all infinite places of F) or indefinite (ramified at all infinite places except one); this determines which of the two algorithms will be used (see the introduction). Indefinite algebras may only be used for spaces of parallel weight 2. The algebra must be unramified at all finite primes (for full cuspidal spaces, although often a different algebra may be used to compute a NewSubspace). In the definite case the order must be maximal, while in the indefinite case it must be an Eichler order with discriminant equal to the level N.

Example ModFrmHil_creation-example (H146E1)

Here we create some spaces of modular forms over Q(Sqrt(85)).
> _<x> := PolynomialRing(Rationals());
> F := NumberField(x^2-85);
> level := 1*Integers(F);
> H := HilbertCuspForms(F, level);
> H;
Cuspidal space of Hilbert modular forms over Number Field with defining polynomial
x^2 - 85 over the Rational Field
   Level = Ideal of norm 1 generated by ( [1, 0] )
   Weight = [ 2, 2 ]
This returns instantly because no nontrivial computations have been done yet. We can find out which quaternion order will be used internally to do computations.
> QO := QuaternionOrder(H);
> A := Algebra(QO);
> A;
Quaternion Algebra with base ring F
> A.1^2, A.2^2, A.3^2;
-1 -1 -1
> IsMaximal(QO);
true
So the order is a maximal order in Hamilton's quaternion algebra over F. We now define a space with level equal to one of the split primes dividing 3.
> level := Factorization(3*Integers(F))[1][1];
> Norm(level);
3
> weight := [3,5];
> H := HilbertCuspForms(F, level, weight);
If we wish, we may tell Magma to use the same quaternion order. (This would avoid some of the time-consuming computations being done twice.)
> H := HilbertCuspForms(F, level, weight : QuaternionOrder:=QO);
V2.28, 13 July 2023