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.
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.
> _<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); trueSo 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);