Decomposition(M) : ModFrmAlg -> [ ModTupFld ]
UseLLL: BoolElt Default: true
UseAuto: BoolElt Default: true
LowMemory: BoolElt Default: false
ThetaPrec: RngIntElt Default: 25
Proof: BoolElt Default: true
Force: BoolElt Default: false
Given a space M of algebraic modular forms, this decomposes M into subspaces that are
irreducible modules under the action of the Hecke operators TP, k with Nm(P)k ≤B.
It will also return a boolean specifiying if all modules are proven to be irreducible.
If B is not specified and the characteristic of the coefficient ring is 0,
returns a complete decopmosition into irreducible modules.
If B is not specified and the characteristic is positive, decomposes according to the first few primes.
UseAuto: BoolElt Default: true
LowMemory: BoolElt Default: false
ThetaPrec: RngIntElt Default: 25
This is a list containing a representative eigenform from each Galois orbit,
equivalently an irreducible Hecke module.
Parameters are as in HeckeOperator.
Eigenvectors(M, D) : ModFrmAlg, [ ModTupFld ] -> List, BoolElt
A list of vectors which are eigenvectors for the Hecke algebra of
M, given the decomposition of M as a sum of Hecke modules
given by D.
If they were all irreducible, the second return value is
true.
An eigenform f of M with the associated data, which is a tuple
(v, b, A, c), where v is a vector in the undelrying vector space,
which is an eigenvector for the Hecke algebra,
b is a boolean, set to true if f is an eigenform,
A is a list of eigenvalues, given as a tuple (k, p, a),
where k = (ki), p = (pi) is an array such that pi is an array of generators
for the corresponding ideals Pi,
and a = (am, n) is an array such that am, n is the eigenvalue
for TPm, kn.
HeckeEigenvalue(f, P) : ModFrmAlgElt, RngInt -> FldElt
HeckeEigenvalue(f, P) : ModFrmAlgElt, RngIntElt -> FldElt
k: RngIntElt Default: 1
The eigenvalue of the Hecke operator TP, k acting on the
eigenform f (which should be an algebraic modular form constructed using
HeckeEigenforms).
HeckeEigenvalues(f, P) : ModFrmAlgElt, RngInt -> [ FldElt ]
HeckeEigenvalues(f, P) : ModFrmAlgElt, RngIntElt -> [ FldElt ]
The sequence of eigenvalues of eigenvalues for the Hecke operators
TP, k acting on the eigenform f for all k.
(which should be an algebraic modular form constructed using
HeckeEigenforms).
HeckeEigensystems(M, k) : ModFrmAlg, RngIntElt -> List, [ RngInt ]
A list of pairs consisting of an eigenform and its eigenvalues
for the operator TP, k,
one for each of the primes P for which an eigenvalue has been
computed, as well as a list of the associated prime ideals.
Precision: RngIntElt Default: 0
Displays a formatted list of Hecke eigenvalues of the eigenform f
with respect to the operators TP, k for all P with
Nm(P) ≤n where n is given by Precision.
If Precision is 0, displays all Hecke eigenvalues that
have been computed so far.
Precision can also be a sequence of prime ideals, and then
the Hecke eigensystems displayed will be for these prime ideals.
HeckeEigensystem(f, k) : ModFrmAlgElt, RngIntElt -> [ FldElt ], [ RngInt ]
HeckeEigensystem(f) : ModFrmAlgElt -> [ FldElt ], [ RngOrdIdl ]
HeckeEigensystem(f) : ModFrmAlgElt -> [ FldElt ], [ RngInt ]
Precision: RngIntElt Default: 0
UseAuto: BoolElt Default: true
UseLLL: BoolElt Default: true
LowMemory: BoolElt Default: false
ThetaPrec: RngIntElt Default: 25
Hecke eigenvalues of the eigenform f
with respect to the operators TP, k for all P with
Nm(P) ≤n where n is given by Precision,
as well as the sequence of primes P.
If Precision is 0, displays all Hecke eigenvalues that
have been computed so far.
Precision can also be a sequence of prime ideals, and then
the Hecke eigensystems displayed will be for these prime ideals.
The other parameters are as in HeckeOperator.
LPolynomial(f, P, d) : ModFrmAlgElt, RngInt, RngIntElt -> RngSerPowElt
LPolynomial(f, P, d) : ModFrmAlgElt, RngIntElt, RngIntElt -> RngSerPowElt
LPolynomial(f, P) : ModFrmAlgElt, RngOrdIdl -> RngUPolElt
LPolynomial(f, P) : ModFrmAlgElt, RngInt -> RngUPolElt
LPolynomial(f, P) : ModFrmAlgElt, RngIntElt -> RngUPolElt
UseAuto: BoolElt Default: true
LowMemory: BoolElt Default: false
ThetaPrec: RngIntElt Default: 25
Satake: = BoolElt Default: false
The L-polynomial of f at the prime P up to precision xd.
Currently only implemented for good primes.
For orthogonal modular forms over quinary quadratic spaces,
also implemented for bad primes.
The parameters UseAuto, LowMemory and ThetaPrec
are for computing the Hecke operators, as in HeckeOperator.
If Satake is {true}, uses a general implementation of the
Satake polynomial.
Precision: RngIntElt Default: 0
UseAuto: BoolElt Default: true
LowMemory: BoolElt Default: false
ThetaPrec: RngIntElt Default: 25
The L-polynomials of f at the primes P, such that
Nm(P) ≤n, where n is given by Precision.
If Precision is 0, returns those for which
all the Hecke eigenvalues for TP, k have been computed.
The parameters UseAuto, LowMemory and
ThetaPrec are used as input for HeckeOperator.
Split: BoolElt Default: false
The generic Satake polynomial at an unramified good prime for M.
Split determines whether this is a split or inert prime.
SatakePolynomial(f, p) : ModFrmAlgElt, RngIntElt -> RngUPolElt
d: RngIntElt Default: Infinity()
The Satake polynomial of f at the (good) prime p,
up to precision d.
The Satake polynomial of an orthogonal group with split rank r, and
anisotropic rank a, using ballot sequences, based on [Mur99].
We compute the eigenforms corresponding to the genus of ternary lattices
of half-discriminant 11, and find there are only two - an Eisenstein series and a cusp form,
which comes from the elliptic cusp form of level 11 over Q.
> Q := Matrix([[2,0,1],[0,2,0],[1,0,6]]);
> M := OrthogonalModularForms(Q);
> Dimension(M);
2
> time fs := HeckeEigenforms(M);
Time: 0.010
> fs;
[
Eisenstein eigenform given in coordinates by
(1 1),
Cuspidal eigenform given in coordinates by
( 1 -2/3)
]
We look at the first few eigenvalues of the cuspidal eigenform.
> evs, Ps := HeckeEigensystem(fs[2], 1 : Precision := 100);
> evs;
[ -2, -1, 1, -2, 0, 4, -2, 0, -1, 0, 7, 3, -8, -6, 8, -6, 5, 12, -7, -3, 4, -10,
-6, 15, -7 ]
Happily, they agree with the eigenvalues of the elliptic cusp form of level 11
over Q:
> fQ := Newforms(CuspForms(11))[1][1];
> ps := [Norm(P) : P in Ps];
> assert &and[Coefficient(fQ,ps[i]) eq evs[i] : i in [1..#ps] | ps[i] ne 11];
V2.29, 21 October 2025