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 \(T_{P,k}\) with \(\hbox{Nm}(P)^k \le 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 ]#

The Eisenstein series of \(M\) which are eigenforms for the Hecke algebra.

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 = (k_i)\), \(p = (p_i)\) is an array such that \(p_i\) is an array of generators for the corresponding ideals \(P_i\), and \(a = (a_{m,n})\) is an array such that \(a_{m,n}\) is the eigenvalue for \(T_{P_m, k_n}\).

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 \(T_{P,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 \(T_{P,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 \(T_{P,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 \(T_{P,k}\) for all \(P\) with \({\operatorname{N}}(P) \le 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 \(T_{P,k}\) for all \(P\) with \({\operatorname{N}}(P) \le 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 \(x^d\). 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 \({\operatorname{N}}(P) \le n\), where \(n\) is given by Precision. If Precision is \(0\), returns those for which all the Hecke eigenvalues for \(T_{P,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 [Murphy, 1999].

Example: Eigenform Examples (ex-f209ed)#

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 \({\mathbb{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)
]

Run in calculator

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 ]

Run in calculator

Happily, they agree with the eigenvalues of the elliptic cusp form of level \(11\) over \({\mathbb{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];

Run in calculator