26.8 Hecke algebras and modules

Module: sage.modular.hecke.hecke_operator

Module-level Functions

is_HeckeAlgebraElement( x)

is_HeckeOperator( x)

Class: HeckeAlgebraElement

class HeckeAlgebraElement
HeckeAlgebraElement( self, parent)

Functions: apply_sparse,$  $ charpoly,$  $ codomain,$  $ decomposition,$  $ det,$  $ domain,$  $ fcp,$  $ hecke_module_morphism,$  $ image,$  $ kernel,$  $ trace

apply_sparse( self, x)

Apply this Hecke operator to x, where we avoid computing the matrix of x if possible.

sage: M = ModularSymbols(11)
sage: T = M.hecke_operator(23)
sage: T.apply_sparse(M.gen(0))
24*(1,0) - 5*(1,9)

charpoly( self)

Return the characteristic polynomial of this Hecke operator.

sage: M = ModularSymbols(Gamma1(6),4)
sage: M.hecke_operator(2).charpoly()
x^6 - 14*x^5 + 29*x^4 + 172*x^3 - 124*x^2 - 320*x + 256

decomposition( self)

Decompose the Hecke module under the action of this Hecke operator.

sage: M = ModularSymbols(11)
sage: t2 = M.hecke_operator(2)
sage: t2.decomposition()
[
Modular Symbols subspace of dimension 1 of Modular Symbols space of
dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field,
Modular Symbols subspace of dimension 2 of Modular Symbols space of
dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field
]

sage: M = ModularSymbols(33, sign=1).new_submodule()
sage: T = M.hecke_operator(2)
sage: T.decomposition()
[
Modular Symbols subspace of dimension 1 of Modular Symbols space of
dimension 6 for Gamma_0(33) of weight 2 with sign 1 over Rational Field,
Modular Symbols subspace of dimension 1 of Modular Symbols space of
dimension 6 for Gamma_0(33) of weight 2 with sign 1 over Rational Field
]

det( self)

Return the determinant of this Hecke operator.

sage: M = ModularSymbols(23)
sage: T = M.hecke_operator(3)
sage: T.det()
100

fcp( self)

Return the factorization of the characteristic polynomial of this Hecke operator.

sage: M = ModularSymbols(23)
sage: T = M.hecke_operator(3)
sage: T.fcp()
(x - 4) * (x^2 - 5)^2

hecke_module_morphism( self)

Return the endomorphism of Hecke modules defined by the matrix attached to this Hecke operator.

sage: M = ModularSymbols(Gamma1(13))
sage: t = M.hecke_operator(2)
sage: t
Hecke operator T_2 on Modular Symbols space of dimension 15 for Gamma_1(13)
of weight 2 with sign 0 and over Rational Field
sage: t.hecke_module_morphism()
Hecke module morphism T_2 defined by the matrix
(not printing 15 x 15 matrix)
Domain: Modular Symbols space of dimension 15 for Gamma_1(13) of weight ...
Codomain: Modular Symbols space of dimension 15 for Gamma_1(13) of weight
...

image( self)

Return the image of this Hecke operator.

sage: M = ModularSymbols(23)
sage: T = M.hecke_operator(3)
sage: T.fcp()
(x - 4) * (x^2 - 5)^2
sage: T.image()
Modular Symbols subspace of dimension 5 of Modular Symbols space of
dimension 5 for Gamma_0(23) of weight 2 with sign 0 over Rational Field
sage: (T-4).image()
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 5 for Gamma_0(23) of weight 2 with sign 0 over Rational Field
sage: (T**2-5).image()
Modular Symbols subspace of dimension 1 of Modular Symbols space of
dimension 5 for Gamma_0(23) of weight 2 with sign 0 over Rational Field

kernel( self)

Return the kernel of this Hecke operator.

sage: M = ModularSymbols(23)
sage: T = M.hecke_operator(3)
sage: T.fcp()
(x - 4) * (x^2 - 5)^2
sage: T.kernel()
Modular Symbols subspace of dimension 0 of Modular Symbols space of
dimension 5 for Gamma_0(23) of weight 2 with sign 0 over Rational Field
sage: (T-4).kernel()
Modular Symbols subspace of dimension 1 of Modular Symbols space of
dimension 5 for Gamma_0(23) of weight 2 with sign 0 over Rational Field
sage: (T**2-5).kernel()
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 5 for Gamma_0(23) of weight 2 with sign 0 over Rational Field

trace( self)

Return the trace of this Hecke operator.

sage: M = ModularSymbols(1,12)
sage: T = M.hecke_operator(2)
sage: T.trace()
2001

Special Functions: __add__,$  $ __call__,$  $ __rmul__,$  $ __sub__,$  $ _HeckeAlgebraElement__is_compatible

__add__( self, other)

sage: M = ModularSymbols(11)
sage: t = M.hecke_operator(2)
sage: t
Hecke operator T_2 on Modular Symbols space of dimension 3 for Gamma_0(11)
of weight 2 with sign 0 over Rational Field
sage: t + t
Hecke operator on Modular Symbols space of dimension 3 for Gamma_0(11) of
weight 2 with sign 0 over Rational Field defined by:
[ 6  0 -2]
[ 0 -4  0]
[ 0  0 -4]

We can also add Hecke operators with different indexes:

sage: M = ModularSymbols(Gamma1(6),4)
sage: t2 = M.hecke_operator(2); t3 = M.hecke_operator(3)
sage: t2 - t3
Hecke operator on Modular Symbols space of dimension 6 for Gamma_1(6) of
weight 4 with sign 0 and over Rational Field defined by:
(not printing 6 x 6 matrix)
sage: (t2 - t3).charpoly()
x^6 + 36*x^5 + 104*x^4 - 3778*x^3 + 7095*x^2 - 3458*x

__call__( self, x)

Apply this Hecke operator to $ x$ .

sage: M = ModularSymbols(11); t2 = M.hecke_operator(2)
sage: t2(M.gen(0))
3*(1,0) - (1,9)

sage: t2 = M.hecke_operator(2); t3 = M.hecke_operator(3)
sage: t3(t2(M.gen(0)))
12*(1,0) - 2*(1,9)
sage: (t3*t2)(M.gen(0))
12*(1,0) - 2*(1,9)

__rmul__( self, left)

sage: M = ModularSymbols(11); t2 = M.hecke_operator(2)
sage: 2*t2
Hecke operator on Modular Symbols space of dimension 3 for Gamma_0(11) of
weight 2 with sign 0 over Rational Field defined by:
[ 6  0 -2]
[ 0 -4  0]
[ 0  0 -4]

__sub__( self, other)

Compute the difference of self and other.

sage: M = ModularSymbols(Gamma1(6),4)
sage: t2 = M.hecke_operator(2); t3 = M.hecke_operator(3)
sage: t2 - t3
Hecke operator on Modular Symbols space of dimension 6 for Gamma_1(6) of
weight 4 with sign 0 and over Rational Field defined by:
(not printing 6 x 6 matrix)

Class: HeckeAlgebraElement_matrix

class HeckeAlgebraElement_matrix
HeckeAlgebraElement_matrix( self, parent, A)

Functions: matrix

matrix( self)

Return the matrix that defines this Hecke algebra element.

sage: M = ModularSymbols(1,12)
sage: T = M.hecke_operator(2).matrix_form()
sage: T.matrix()
[ -24    0    0]
[   0  -24    0]
[4860    0 2049]

Special Functions: __cmp__,$  $ __mul__,$  $ _latex_,$  $ _repr_

Class: HeckeOperator

class HeckeOperator
HeckeOperator( self, parent, n)

sage: M = ModularSymbols(11)
sage: M.hecke_operator(2005)
Hecke operator T_2005 on Modular Symbols space of dimension 3 for
Gamma_0(11) of weight 2 with sign 0 over Rational Field

Functions: index,$  $ matrix,$  $ matrix_form

index( self)

Return the index of this Hecke operator, i.e., if this Hecke operator is $ T_n$ , return the int $ n$ .

sage: T = ModularSymbols(11).hecke_operator(17)
sage: T.index()
17

matrix( self)

Return the matrix underlying this Hecke operator.

sage: T = ModularSymbols(11).hecke_operator(17)
sage: T.matrix()
[18  0 -4]
[ 0 -2  0]
[ 0  0 -2]

matrix_form( self)

Return the matrix form of this element of a Hecke algebra.

sage: T = ModularSymbols(11).hecke_operator(17)
sage: T.matrix_form()
Hecke operator on Modular Symbols space of dimension 3 for Gamma_0(11) of
weight 2 with sign 0 over Rational Field defined by:
[18  0 -4]
[ 0 -2  0]
[ 0  0 -2]

Special Functions: __cmp__,$  $ __mul__,$  $ _latex_,$  $ _repr_

__mul__( self, other)

We create the space of modular symbols of level $ 11$ and weight $ 2$ , then compute $ T_2$ and $ T_3$ on it, along with their composition.

sage: M = ModularSymbols(11)
sage: t2 = M.hecke_operator(2); t3 = M.hecke_operator(3)
sage: t2*t3
Hecke operator T_6 on Modular Symbols space of dimension 3 for Gamma_0(11)
of weight 2 with sign 0 over Rational Field
sage: t3.matrix() * t2.matrix()
[12  0 -2]
[ 0  2  0]
[ 0  0  2]
sage: (t2*t3).matrix()
[12  0 -2]
[ 0  2  0]
[ 0  0  2]

When we compute $ T_2^2$ the result is not (easily seen to be) a Hecke operator of the form $ T_n$ , so it is returned as a Hecke module homomorphism defined as a matrix:

sage: t2**5
Hecke operator on Modular Symbols space of dimension 3 for Gamma_0(11) of
weight 2 with sign 0 over Rational Field defined by:
[243   0 -55]
[  0 -32   0]
[  0   0 -32]

See About this document... for information on suggesting changes.