12.2.1.1 ModularSymbolsSpace Objects

class ModularSymbolsSpace
ModularSymbolsSpace( group, weight, character, sign, base_ring)

Instances of class ModularSymbolsSpace have the following methods (in addition to inherited methods and special methods):

character,$  $ cuspidal_submodule,$  $ cuspidal_subspace,$  $ dual_star_involution_matrix,$  $ eisenstein_subspace,$  $ factorization,$  $ group,$  $ hecke_bound,$  $ hecke_module_of_level,$  $ is_cuspidal,$  $ is_simple,$  $ minus_subspace,$  $ multiplicity,$  $ new_subspace,$  $ ngens,$  $ plus_subspace,$  $ q_expansion,$  $ q_expansion_basis,$  $ sign,$  $ sign_subspace,$  $ simple_factors,$  $ star_decomposition,$  $ star_eigenvalues,$  $ star_involution,$  $ sturm_bound

Further documentation:

cuspidal_subspace( )

Synonym for cuspidal_submodule.

dual_star_involution_matrix( )

Return the matrix of the dual star involution, which is induced by complex conjugation on the linear dual of modular symbols.

eisenstein_subspace( )

Synonym for eisenstein_submodule.

factorization( )

Returns a list of pairs $ (S,e)$ where $ S$ is simple spaces of modular symbols and self is isomorphic to the direct sum of the $ S^e$ as a module over the anemic Hecke algebra adjoin the star involution.

ASSUMPTION: self is a module over the anemic Hecke algebra.

group( )

Returns the group of this modular symbols space.

INPUT:
   ModularSymbols self -- an arbitrary space of modular symbols
   
OUTPUT:
   CongruenceSubgroup -- the congruence subgroup that this is a space
                      of modular symbols for.

ALGORITHM: The group is recorded when this space is created.

sage: m = ModularSymbols(20)
sage: m.group()
Gamma0(20)

hecke_bound( )

Returns the Sturm bound for this space of modular symbols.

Returns a positive integer $ n$ such that the Hecke operators $ T_1,\ldots, T_n$ acting on cusp forms generate the Hecke algebra as a $ \mathbf{Z}$ -module when the character is trivial or quadratic. Otherwise, $ T_1,\ldots, T_n$ generate the Hecke algebra at least as a $ \mathbf{Z}[\varepsilon ]$ -module, where $ \mathbf{Z}[\varepsilon ]$ is the ring generated by the values of the Dirichlet character $ \varepsilon $ . Alternatively, this is a bound such that if two cusp forms associated to this space of modular symbols are congruent modulo $ (\lambda, q^n)$ , then they are congruent modulo $ \lambda$ .

REFERENCES: See the Agashe-Stein appendix to Lario and Schoof's Some computations with Hecke rings and deformation rings, Experimental Math., 11 (2002), no. 2, 303-311. This result originated in the paper Sturm, On the congruence of modular forms, Springer LNM 1240, 275-280, 1987.

REMARK:

Kevin Buzzard pointed out to me (William Stein) in Fall 2002 that the above bound is fine for $ \Gamma_1(N)$ with character, as one sees by taking a power of $ f$ . More precisely, if $ f
\equiv 0 \pmod{p}$ for first $ s$ coefficients, then $ f^r \equiv 0
\pmod{p}$ for first $ sr$ coefficents. Since the weight of $ f^r$ is $ r\cdot k(f)$ , it follows that if $ s \geq b$ , where $ b$ is the Sturm bound for $ \Gamma_0(N)$ at weight $ k(f)$ , then $ f^r$ has valuation large enough to be forced to be 0 at $ r*k(f)$ by Sturm bound (which is valid if we choose $ r$ correctly). Thus $ f
\equiv 0 \pmod{p}$ . Conclusion: For $ \Gamma_1(N)$ with fixed character, the Sturm bound is exactly the same as for $ \Gamma_0(N)$ .

A key point is that we are finding $ \mathbf{Z}[\varepsilon ]$ generators for the Hecke algebra here, not $ \mathbf{Z}$ -generators. So if one wants generators for the Hecke algebra over $ \mathbf{Z}$ , this bound must be suitably modified.

hecke_module_of_level( level)

See the documentation for self.modular_symbols_of_level(level)

minus_subspace( [compute_dual=True])

Return the subspace of self on which the star involution acts as -1.

INPUT:
    compute_dual -- bool (default: True) also compute dual subspace.
                    This are useful for many algorithms.
OUTPUT:
    subspace of modular symbols

multiplicity( S)

Return the multiplicity of the simple modular symbols space S in self. S must be a simple anemic Hecke module.

ASSUMPTION: self is an anemic Hecke module with the same weight and group as S, and S is simple.

new_subspace( [p=None])

Synonym for new_submodule.

ngens( )

The number of generators of self.

INPUT:
   ModularSymbols self -- arbitrary space of modular symbols.
OUTPUT:
   int -- the number of generators, which is the same as the
          dimension of self.
ALGORITHM:
   Call the dimension function.

sage: m = ModularSymbols(33)
sage: m.ngens()
9
sage: m.rank()
9
sage: ModularSymbols(100, weight=2, sign=1).ngens()
18

plus_subspace( [compute_dual=True])

Return the subspace of self on which the star involution acts as +1.

INPUT:
    compute_dual -- bool (default: True) also compute dual subspace.
                    This are useful for many algorithms.
                    
OUTPUT:
    subspace of modular symbols

q_expansion( prec)

Returns the q-expansion to precision prec of a newform associated to self, where self must be new, cuspidal, and simple.

q_expansion_basis( prec)

Returns a basis of q-expansions (as power series) to precision prec of the space of modular forms associated to self. The q-expansions are defined over the same base ring as prec.

sign( )

Returns the sign of self.

For efficiency reasons, it is often useful to compute in the (largest) quotient of modular symbols where the * involution acts as +1, or where it acts as -1.

INPUT:
   ModularSymbols self -- arbitrary space of modular symbols.
   
OUTPUT:
   int -- the sign of self, either -1, 0, or 1.
          -1 -- largest quotient where * acts as -1,
          +1 -- largest quotient where * acts as +1, 
           0 -- full space of modular symbols (no quotient).

ALGORITHM: Call the dimension function.

sage: m = ModularSymbols(33)
sage: m.rank()
9
sage: m.sign()
0
sage: m = ModularSymbols(33, sign=0)
sage: m.sign()
0
sage: m.rank()
9
sage: m = ModularSymbols(33, sign=-1)
sage: m.sign()
-1
sage: m.rank()
3

sign_subspace( sign, [compute_dual=True])

Return the subspace of self that is fixed under the star involution.

INPUT:
    sign -- int (either -1, 0 or +1)
    compute_dual -- bool (default: True) also compute dual subspace.
                    This are useful for many algorithms.
OUTPUT:
    subspace of modular symbols

simple_factors( )

Returns a list modular symbols spaces $ S$ where $ S$ is simple spaces of modular symbols (for the anemic Hecke algebra) and self is isomorphic to the direct sum of the $ S$ with some multiplicities, as a module over the anemic Hecke algebra. For the multiplicities use factorization() instead.

ASSUMPTION: self is a module over the anemic Hecke algebra.

star_eigenvalues( )

Returns the eigenvalues of the star involution acting on self.

sage: M = ModularSymbols(11)
sage: D = M.decomposition()
sage: M.star_eigenvalues()
[1, -1]
sage: D[0].star_eigenvalues()
[1]
sage: D[1].star_eigenvalues()
[1, -1]
sage: D[1].plus_subspace().star_eigenvalues()
[1]
sage: D[1].minus_subspace().star_eigenvalues()
[-1]

star_involution( )

Return the star involution on self, which is induced by complex conjugation on modular symbols.

sturm_bound( )

Returns the Sturm bound for this space of modular symbols.

Returns a positive integer $ n$ such that the Hecke operators $ T_1,\ldots, T_n$ acting on cusp forms generate the Hecke algebra as a $ \mathbf{Z}$ -module when the character is trivial or quadratic. Otherwise, $ T_1,\ldots, T_n$ generate the Hecke algebra at least as a $ \mathbf{Z}[\varepsilon ]$ -module, where $ \mathbf{Z}[\varepsilon ]$ is the ring generated by the values of the Dirichlet character $ \varepsilon $ . Alternatively, this is a bound such that if two cusp forms associated to this space of modular symbols are congruent modulo $ (\lambda, q^n)$ , then they are congruent modulo $ \lambda$ .

REFERENCES: See the Agashe-Stein appendix to Lario and Schoof, Some computations with Hecke rings and deformation rings, Experimental Math., 11 (2002), no. 2, 303-311. This result originated in the paper Sturm, On the congruence of modular forms, Springer LNM 1240, 275-280, 1987.

REMARK:

Kevin Buzzard pointed out to me (William Stein) in Fall 2002 that the above bound is fine for $ \Gamma_1(N)$ with character, as one sees by taking a power of $ f$ . More precisely, if $ f
\equiv 0 \pmod{p}$ for first $ s$ coefficients, then $ f^r \equiv 0
\pmod{p}$ for first $ sr$ coefficents. Since the weight of $ f^r$ is $ r\cdot k(f)$ , it follows that if $ s \geq b$ , where $ b$ is the Sturm bound for $ \Gamma_0(N)$ at weight $ k(f)$ , then $ f^r$ has valuation large enough to be forced to be 0 at $ r*k(f)$ by Sturm bound (which is valid if we choose $ r$ correctly). Thus $ f
\equiv 0 \pmod{p}$ . Conclusion: For $ \Gamma_1(N)$ with fixed character, the Sturm bound is exactly the same as for $ \Gamma_0(N)$ .

A key point is that we are finding $ \mathbf{Z}[\varepsilon ]$ generators for the Hecke algebra here, not $ \mathbf{Z}$ -generators. So if one wants generators for the Hecke algebra over $ \mathbf{Z}$ , this bound must be suitably modified.

Instances of class ModularSymbolsSpace also have the following special methods:

__cmp__

Further documentation:

__cmp__( other)

Compare self and other.

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