Eigenspace Decomposition and Eigenforms

Decomposition(M, B) : ModFrmAlg, RngIntElt -> [ ModTupFld ], BoolElt
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.
HeckeEigenforms(M) : ModFrmAlg -> [ ModFrmAlgElt ]
    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.
EisensteinSeries(M) : ModFrmAlg -> [ ModFrmAlgElt ]
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.
HeckeEigenform(M, data) : ModFrmAlg, Tup -> ModFrmAlgElt
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, RngOrdIdl -> FldElt
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, RngOrdIdl -> [ FldElt ]
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, [ RngOrdIdl ]
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.
DisplayHeckeEigensystem(f) : ModFrmAlgElt ->
    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 ], [ RngOrdIdl ]
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, RngOrdIdl, RngIntElt -> RngSerPowElt
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.
LPolynomials(f) : ModFrmAlgElt -> [ RngUPolElt ]
    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.
SatakePolynomialUnramified(M) : ModFrmAlg -> RngUPolElt
    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 -> RngSerPowElt
SatakePolynomial(f, p) : ModFrmAlgElt, RngIntElt -> RngUPolElt
    d: RngIntElt                        Default: Infinity()
The Satake polynomial of f at the (good) prime p, up to precision d.
SatakePolynomialBallot(r, a) : RngIntElt, RngIntElt -> RngUPolElt
The Satake polynomial of an orthogonal group with split rank r, and anisotropic rank a, using ballot sequences, based on [Mur99].

Example ModFrmAlg_eigenform-examples (H151E4)

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