Operators

Operators on spaces of Hilbert modular forms are returned as matrices with respect to a basis of M. For spaces of parallel weight 2, operators are matrices over Q, and the basis of M is permanently fixed. For all other weights, two finite extensions of Q may arise:

(i)
The field that is used for the raw computations; operators are originally computed as matrices over this field.
(ii)
The minimal field F for which there exists a basis of M such that operators are matrices with entries in F. For all parallel weights, this minimal field is Q. We refer to such a basis as a "rational basis" of M.

Changing the basis can be expensive for large spaces, so for some spaces a "rational basis" is not computed by default. In these cases, Hecke operators are returned as matrices over the "raw" field, with respect to a basis which remains fixed until SetRationalBasis(M) is invoked by the user. When that occurs, the basis of the space is changed to a "rational basis" which is then permanently fixed; as a result, the operators also change (they are now given as matrices with respect to the new basis).

A space M is guaranteed to have a "rational basis" (which is permanently fixed) in any of the following circumstances:

(i)
M has parallel weight,
(ii)
M was constructed using NewSubspace (unless RationalBasis was set to false), or was constructed using NewformDecomposition,
(iii)
SetRationalBasis(M) has been invoked.
HeckeOperator(M, P) : ModFrmHil, RngOrdIdl -> Mtrx
This returns a matrix representing the Hecke operator TP on the space M of Hilbert modular forms.

Example ModFrmHil_hecke (H146E3)

> R<x> := PolynomialRing(IntegerRing());
> F<a> := NumberField(x^2-2);  OF := Integers(F);
> M3 := HilbertCuspForms(F, 3*OF, [2,4]);
> Dimension(M3);
1
> P2 := Factorization(2*OF)[1][1];
> Norm(P2);
2
> HeckeOperator(M3, P2);
[2]
Since the space has dimension 1, it consists of a single eigenform, whose eigenvalues can be read from the Hecke matrices. We now consider the space of level 5, which has dimension 3. The Hecke matrices are given with respect to the basis used to compute the space, over the extension K displayed here.
> M5 := HilbertCuspForms(F, 5*OF, [2,4] : QuaternionOrder:=QuaternionOrder(M3) );
> Dimension(M5);
3
> T2 := HeckeOperator(M5, P2);
> K<b> := BaseRing(T2);
> K;
Number Field with defining polynomial $.1^2 + 1 over F
> T2;
[       0    8*a*b -2*b - 2]
[-1/2*a*b        2        0]
[   b - 1        0        0]
AtkinLehnerOperator(M, P) : ModFrmHil, RngOrdIdl -> Mtrx
This returns a matrix representing the Atkin-Lehner operator wP on the space M of Hilbert modular forms.
DegeneracyOperator(M, P, Q) : ModFrmHil, RngOrdIdl, RngOrdIdl -> Mtrx
This computes degeneracy maps in the "downward" direction as maps from M to itself. Here M is a space of Hilbert modular forms of level N, P is a prime dividing N, and Q either equals P or the unit ideal (1). The function returns a matrix representing a map from M to M whose image equals a copy of the space of level N/P.

When Q = (1), this is double coset operator defined by cosets of an element with determinant 1 (which can be seen as a "norm" map); when Q = P, it is the double coset operator defined by cosets of an element with determinant (Norm)(P).

DeleteHeckePrecomputation(O) : AlgAssVOrd ->
DeleteHeckePrecomputation(O, P) : AlgAssVOrd, RngOrdIdl ->
These procedures delete data obtained during the precomputation phase of the "definite" algorithm. This data is used in the computation of Hecke operators (and other operators) for given primes, and the same data can be re-used for all spaces that are computed with the some quaternion order O. (Often this is the same for spaces of all weights and levels over a particular number field.) Since the data is the most expensive part of the Hecke computation, it is stored by default. However it is very expensive in memory; these procedures allow the user to reclaim this memory when necessary.
V2.28, 13 July 2023