[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Operators

Each space Mm of modular symbols comes equipped with a commuting family T_1, T_2, T_3, ... of linear operators acting on it called the Hecke operators.

The Hecke operators are defined recursively, as follows. First, T_1=1. When n=p is prime, T_p(x) = [ pmatrix(p&0cr 0&1) + sum_(r ( mod ) p) pmatrix(1&r cr 0&p) ] x, where the first matrix is omitted if p divides the level N of M. If m and n are coprime, then T_(mn) = T_mT_n. If p is a prime, r >= 2 is an integer, varepsilon is the Dirichlet character associated to M, and k is the weight of M, then T_(p^r) = T_p T_(p^(r - 1)) - varepsilon(p) p^(k - 1) T_(p^(r - 2)).


Example ModSym_HeckeOperators (H94E14)

In Magma, Hecke operators are represented as n x n-matrices, acting from the right, with respect to the basis Basis(M). For example

> M := ModularSymbols(12);
> T2 := HeckeOperator(M,2);
> M.1;
{oo, 0}
> T2;
[ 2  0 -1  0  0]
[ 2  0 -1  0  0]
[ 0  0  1 -2 -2]
[ 0 -1  1 -1 -2]
[ 0  1 -1  1  2]
> M.1*T2;
2*{oo, 0} + -1*{-1/10, 0}

HeckeOperator(M, n) : ModSym, RngIntElt -> AlgMatElt
Compute a matrix representing the nth Hecke operator T_n with respect to Basis(M).
HeckePolynomial(M, n) : ModSym, RngIntElt -> RngUPolResElt
Compute the characteristic polynomial of the Hecke operator T_n. When n is prime, the Deligne bound on the sizes of Hecke eigenvalues is used, so HeckePolynomial is frequently much faster than CharacteristicPolynomial(HeckeOperator(M,n)).
IntegralHeckeOperator(M, n) : ModSym, RngIntElt -> AlgMatElt
respect to Basis(Lattice(M)).
DualHeckeOperator(M, n) : ModSym, RngIntElt -> AlgMatElt
Compute a matrix representing the Hecke operator T_n on the dual vector space representation of M. This function is much more efficient than HeckeOperator(M,n) when the dimension of M is small relative to the dimension of the AmbientSpace(M). Note that DualHeckeOperator(M,n) is not guaranteed to equal the transpose of HeckeOperator(M,n) because DualHeckeOperator(M,n) is computed with respect to Basis(DualVectorSpace(M)).
AtkinLehner(M, q) : ModSym, RngIntElt -> AlgMatElt
A matrix representing the qth Atkin-Lehner involution W_q on M, when it is defined. The involution W_q is defined when M has trivial character and even weight. When possible, the Atkin-Lehner map is normalized so that it is an involution; such normalization may not be possible when k>2 and the characteristic of the base field of M divides q.

To each divisor q of N such that ( gcd)(q, N/q)=1 there is an Atkin-Lehner involution W_q on M, which is defined as follows. Using the Euclidean algorithm, choose integers x, y, z, w such that qxw - (N/q)yz = 1; let g=pmatrix(dx & y cr Nz& qw) and define W_q(x) = g(x) / q^(k - 2 /2). For example, when q=N we have g=pmatrix(0& - 1cr N& 0).

DualAtkinLehner(M, q) : ModSym, RngIntElt -> AlgMatElt
The action of the Atkin-Lehner involution on the dual representation of M, when it is defined.
StarInvolution(M) : ModSym -> AlgMatElt
The conjugation involution * on M that sends the modular symbol X^iY^j{u, v} to ( - 1)^jX^iY^j {-u, - v}.
DualStarInvolution(M) : ModSym -> AlgMatElt
The conjugation involution * on the dual representation of M (see the documentation for StarInvolution.)
ThetaOperator(M1, M2) : ModSym, ModSym -> Map
Multiplication by X^(p)Y - XY^(p), which is a possible analogue of the theta-operator. (On mod p modular forms, the theta-operator is the map given by f |-> q (df/dq).) Both M_1 and M_2 must be spaces of modular symbols over a field of positive characteristic p; they must have the same level and character, and the weight of M_2 must equal the weight of M_1 plus p + 1.

Example ModSym_Operators (H94E15)

> M := ModularSymbols(11,4,+1); M;
Full modular symbols space for Gamma_0(11) of weight 4 and dimension 4
over Rational Field
> HeckeOperator(M,2);
[   9    0  2/5 -2/5]
[   0    5  9/5 11/5]
[   0    5  7/5 13/5]
[   0    0 22/5 23/5]
The entries of T_2 are not guaranteed to be integers because Basis(M) is just a basis of a Q-vector space. The entries will be integers if we compute T_2 with respect to an integral basis.

> IntegralHeckeOperator(M,2);
[ 0  2  0  0]
[ 1  2  0  0]
[-5  6  9  0]
[ 2  0  0  9]
The matrix for the Hecke operator on the dual of M is the transpose of T_2. However, the chosen basis for the cuspidal subspace of the dual of M need not satisfy any compatibility with CuspidalSubspace(M).

> DualHeckeOperator(M,2);
[   9    0    0    0]
[   0    5    5    0]
[ 2/5  9/5  7/5 22/5]
[-2/5 11/5 13/5 23/5]
> S := CuspidalSubspace(M);
> HeckeOperator(S, 2);
[    5 -13/5]
[    5    -3]
> DualHeckeOperator(S, 2);
[-3/4  1/8]
[-1/2 11/4]
> // NOT the transpose!
We can also compute the Atkin-Lehner and the *-involution. The *-involution is the identity because we are working in the +1-quotient, which is the largest quotient of ModularSymbols(11,4) where * acts as +1.

> AtkinLehner(S, 11);
[1 0]
[0 1]
> StarInvolution(S);   
[1 0]
[0 1]
On the -1 quotient the Atkin-Lehner involution is the same, but * acts as -1:

> M := ModularSymbols(11,4,-1); M;
Full modular symbols space for Gamma_0(11) of weight 4 and dimension 2
over Rational Field
> S := CuspidalSubspace(M);
> AtkinLehner(S, 11);
[1 0]
[0 1]
> StarInvolution(S);   
[-1  0]
[ 0 -1]

Example ModSym_ThetaOperator (H94E16)

We compute an example of our analogue of the theta-operator on modular symbols.

> N := 11; p := 3; 
> k1 := 2; k2 := k1 + (p+1);
> M1 := ModularSymbols(11,k1,GF(p));
> M2 := ModularSymbols(11,k2,GF(p));
> theta  := ThetaOperator(M1,M2); theta;
Mapping from: ModSym: M1 to ModSym: M2 given by a rule [no inverse]

Now that we have computed theta, we can apply it to one of the modular symbols corresponding to the newform in S_2(Gamma_0(11)).

> D := Decomposition(M1,2);
> f := qEigenform(D[2],10); f;
q + q^2 + 2*q^3 + 2*q^4 + q^5 + 2*q^6 + q^7 + q^9 + O(q^10)
> x := D[2].1;
> y := theta(x); y;
(X^4 + X*Y^3)*{-1/7, 0} + (X^4 + X^3*Y + X*Y^3 + Y^4)*{-1/7, 0} + (X^4 
+ 2*X^3*Y + 2*X*Y^3 + Y^4)*{-1/5, 0} + Y^4*{oo, 0}

Finally, we verify for n<10 that the nth Hecke eigenvalue of y=theta(x) equals n.a_n(f), where f is as above.

> [y*HeckeOperator(M2,n) - n*Coefficient(f,n)*y : n in [1..9]];
[
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
]


 [Next][Prev] [Right] [Left] [Up] [Index] [Root]