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 \(T_{P,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 \(T_{P,n/2}\) splits as a sum of two Hecke operators, corresponding to the orbits of Lagrangians under the action of \({\operatorname{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 \({\operatorname{GO}}(V)\) admits an additional operator in the Hecke algebra, also known as the Perestroika operator, \(K_P\). When the spaces of moular forms for \({\rm O}(V)\) and \({\operatorname{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 \(T_{P,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
Forcetotruein order to force recomputing it.UseLLLallows use of LLL in reducing the lattices upon creation. IfUseAutois set totrue, uses the fact that the automorphism group of the lattice acts naturally on its \(P^k\)-neighbors, computes the orbits under this action, and does not enumerate over all \(P^k\)-neighbors, only on orbit representatives. By default will store all orbits in memory. However, ifLowMemoryis set totrue, computes the orbit every time we hit a representative, and only store its orbit. IfComputeGenusis set totrue, 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).ThetaPrecdetermines the precision to which we compute the theta series. IfThetaPrecis set to 0, performs auto-calibration, and determines the precision that will yield best performance. IfThetaPrecis set to -1, does not use theta series, but instead a greedy reduction algorithm, implemented by Kohel, for the lattices. IfThetaPrecis set to -2, does not use theta series, but instead a greedy reduction algorithm, described in [Nguyen and Stehlé, 2009] for the lattices.
- Example: hecke (ex-83e3f1)#
> 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 \(T_{P,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 \(K_P\) 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 \(T_{P,k}\) or \(T_{P,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 \(T_{P,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 \({\operatorname{N}}(P) \le n\) or given by
ps, with values the images of the \(i\)-th standard basis vector under the Hecke operators \(T_{P,k}\). These are computed using sparse methods that do not require computing the full Hecke operator. Parameters are as inHeckeOperator.