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)).
> 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}
Compute a matrix representing the nth Hecke operator T_n with respect to Basis(M).
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)).
respect to Basis(Lattice(M)).
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)).
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).
The action of the Atkin-Lehner involution on the dual representation of M, when it is defined.
The conjugation involution * on M that sends the modular symbol X^iY^j{u, v} to ( - 1)^jX^iY^j {-u, - v}.
The conjugation involution * on the dual representation of M (see the documentation for StarInvolution.)
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.
> 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]
> 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
]