Operators

Operators on spaces of algebraic modular forms are returned as matrices with respect to a basis of M. Operators are matrices over the coefficient ring of the weight representation W. When the weight is given as a seqeuence of integers, W is generated to be the associated highest weight representation over the field of definition. Therefore, for such spaces of orthogonal modular forms, operators are matrices over F, the base field for the quadratic space. For spaces of unitary modular forms, operators are matrices over K, where K/F is the associated CM extension for the Hermitian space. The basis of M is permanently fixed.

The Hecke algebras for the orthogonal and unitary groups is generated by the operators TP, k where P is a prime ideal, and k is an integer between 1 and n/2. For the special orthogonal group on a quadratic space of even dimension, the operator TP, n/2 splits as a sum of two Hecke operators, corresponding to the orbits of Lagrangians under the action of SO(V), T_(P, (n/2)) = T_(P, (n/2))^ + + T_(P, (n/2))^ -, where the plus an minus sign depend on a choice of orientation. Fixing an orientation, we compute also the operator T_(P, (n/2))^ +. The general orthogonal group GO(V) admits an additional operator in the Hecke algebra, also known as the Perestroika operator, KP. When the spaces of moular forms for OO(V) and GO(V) coincide, we allow computation of this operator as well.

HeckeOperator(M, P, k) : ModFrmHil, RngOrdIdl, RngIntElt -> AlgMatElt
HeckeOperator(M, P, k) : ModFrmHil, RngInt, RngIntElt -> AlgMatElt
HeckeOperator(M, P, k) : ModFrmHil, RngIntElt, RngIntElt -> AlgMatElt
HeckeOperator(M, P) : ModFrmHil, RngOrdIdl -> AlgMatElt
HeckeOperator(M, P) : ModFrmHil, RngInt -> AlgMatElt
HeckeOperator(M, P) : ModFrmHil, RngIntElt -> AlgMatElt
    Force: BoolElt                      Default: false
    UseLLL: BoolElt                     Default: true
    UseAuto: BoolElt                    Default: true
    ComputeGenus: BoolElt               Default: false
    LowMemory: BoolElt                  Default: false
    ThetaPrec: RngIntElt                Default: 25
This returns a matrix representing the Hecke operator TP, k on the space M of algebraic modular forms. P must be a prime ideal or a rational prime number. If P is a rational prime, chooses a prime ideal above P. Once an operator has been computed, it is cached. Set Force to true in order to force recomputing it. UseLLL allows use of LLL in reducing the lattices upon creation. If UseAuto is set to true, uses the fact that the automorphism group of the lattice acts naturally on its Pk-neighbors, computes the orbits under this action, and does not enumerate over all Pk-neighbors, only on orbit representatives. By default will store all orbits in memory. However, if LowMemory is set to true, computes the orbit every time we hit a representative, and only store its orbit. If ComputeGenus is set to true, computes the genus at the same time as computing the Hecke operator. This could save time in large rank. By default, the isometry testing begins by checking the theta series of the lattices (this is a good hash). ThetaPrec determines the precision to which we compute the theta series. If ThetaPrec is set to 0, performs auto-calibration, and determines the precision that will yield best performance. If ThetaPrec is set to -1, does not use theta series, but instead a greedy reduction algorithm, implemented by Kohel, for the lattices. If ThetaPrec is set to -2, does not use theta series, but instead a greedy reduction algorithm, described in [NS09] for the lattices.

Example ModFrmAlg_hecke (H151E3)

> F<sqrt7> := QuadraticField(-7);
> OF := Integers(F);
> M1 := UnitaryModularForms(2*IdentityMatrix(F,3), [2,0]);
> Dimension(M1);
1
> P2 := Factorization(2*OF)[1][1];
> Norm(P2);
2
> HeckeOperator(M1, P2);
[1/8*(-sqrt7 + 13)]
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 weight [4, 0], which has dimension 3. The Hecke matrices are given with respect to the basis used to compute the space, over the field F.
> M2 := UnitaryModularForms(2*IdentityMatrix(F,3), [4,0]);
> Dimension(M2);
3
> T2 := HeckeOperator(M2, P2);
> T2;
[                   0  1/16*(-5*sqrt7 + 9)  1/96*(7*sqrt7 + 13)]
[            21/4     1/16*(sqrt7 - 5)   1/16*(3*sqrt7 + 1)]
[ 1/8*(21*sqrt7 - 21)    1/8*(9*sqrt7 + 3) 1/32*(15*sqrt7 + 69)]
HeckeOperator(M, P, k) : ModFrmHil, RngOrdIdl, RngIntElt -> AlgMatElt
HeckeOperator(M, P, k) : ModFrmHil, RngInt, RngIntElt -> AlgMatElt
HeckeOperator(M, P, k) : ModFrmHil, RngIntElt, RngIntElt -> AlgMatElt
HeckeOperator(M, P) : ModFrmHil, RngOrdIdl -> AlgMatElt
HeckeOperator(M, P) : ModFrmHil, RngInt -> AlgMatElt
HeckeOperator(M, P) : ModFrmHil, RngIntElt -> AlgMatElt
    Force: BoolElt                      Default: false
    UseLLL: BoolElt                     Default: true
    UseAuto: BoolElt                    Default: true
    ComputeGenus: BoolElt               Default: false
    LowMemory: BoolElt                  Default: false
    ThetaPrec: RngIntElt                Default: 25
Restriction of the Hecke operator TP, k to the cuspidal subspace. Parameters are as in HeckeOperator.
PerestroikaOperator(M, P) : ModFrmHil, RngOrdIdl -> AlgMatElt
PerestroikaOperator(M, P) : ModFrmHil, RngInt -> AlgMatElt
PerestroikaOperator(M, P) : ModFrmHil, RngIntElt -> AlgMatElt
    Force: BoolElt                      Default: false
    UseLLL: BoolElt                     Default: true
    UseAuto: BoolElt                    Default: true
    ComputeGenus: BoolElt               Default: false
    LowMemory: BoolElt                  Default: false
    ThetaPrec: RngIntElt                Default: 25
This returns a matrix representing the Perestroika operator KP on the space M of orthogonal modular forms. Parameters are as in HeckeOperator.
PlusOperator(M, P) : ModFrmHil, RngOrdIdl -> AlgMatElt
PlusOperator(M, P) : ModFrmHil, RngInt -> AlgMatElt
PlusOperator(M, P) : ModFrmHil, RngIntElt -> AlgMatElt
    Force: BoolElt                      Default: false
    UseLLL: BoolElt                     Default: true
    UseAuto: BoolElt                    Default: true
    ComputeGenus: BoolElt               Default: false
    LowMemory: BoolElt                  Default: false
    ThetaPrec: RngIntElt                Default: 25
This returns a matrix representing the operator T_(P, (n/2))^ + on the space M of special orthogonal modular forms. Parameters are as in HeckeOperator.
HeckeOperators(M, k) : ModFrmAlg, RngIntElt -> [ AlgMatElt ], [ RngOrdIdl ]
HeckeOperators(M, k) : ModFrmAlg, RngIntElt -> [ AlgMatElt ], [ RngOrdIdl ]
HeckeOperators(M) : ModFrmAlg, RngIntElt -> [ AlgMatElt ], [ RngOrdIdl ]
HeckeOperators(M) : ModFrmAlg, RngIntElt -> [ AlgMatElt ], [ RngOrdIdl ]
An ordered sequence of Hecke operators TP, k or TP, 1 computed so far along with an ordered sequence of the associated ideals P.
SetHeckeOperator(M, T, P, k) : ModFrmAlg, AlgMatElt, RngOrdIdl, RngIntElt ->
SetHeckeOperator(M, T, P, k) : ModFrmAlg, AlgMatElt, RngInt, RngIntElt ->
SetHeckeOperator(M, T, P, k) : ModFrmAlg, AlgMatElt, RngIntElt, RngIntElt ->
SetHeckeOperator(M, T, P) : ModFrmAlg, AlgMatElt, RngOrdIdl ->
SetHeckeOperator(M, T, P) : ModFrmAlg, AlgMatElt, RngInt ->
SetHeckeOperator(M, T, P) : ModFrmAlg, AlgMatElt, RngIntElt ->
Sets the Hecke operator TP, k to be given by the matrix T.
HeckeImages(M, i, n, k) : ModFrmAlg, RngIntElt, RngIntElt, RngIntElt -> Assoc
HeckeImages(M, i, ps, k) : ModFrmAlg, RngIntElt, SeqEnum, RngIntElt -> Assoc
    UseAuto: BoolElt                    Default: true
    UseLLL: BoolElt                     Default: false
    LowMemory: BoolElt                  Default: false
    ThetaPrec: RngIntElt                Default: 25
An associative array whose keys are the good prime ideals P, such that Nm(P) ≤n or given by ps, with values the images of the i-th standard basis vector under the Hecke operators TP, k. These are computed using sparse methods that do not require computing the full Hecke operator. Parameters are as in HeckeOperator.
V2.29, 26 September 2025