This module defines the following classes. There is an abstract base class ModularSymbolsAmbient, derived from space.ModularSymbolsSpace and hecke.AmbientHeckeModule. As this is an abstract base class, only derived classes should be instantiated. There are five derived classes:
EXAMPLES:
We compute a space of modular symbols modulo 2. The dimension is different from that of the corresponding space in characteristic 0:
sage: M = ModularSymbols(11,4,base_ring=GF(2)); M
Modular Symbols space of dimension 7 for Gamma_0(11) of weight 4
with sign 0 over Finite Field of size 2
sage: M.basis()
([X*Y,(1,0)], [X*Y,(1,8)], [X*Y,(1,9)], [X^2,(0,1)], [X^2,(1,8)], [X^2,(1,9)], [X^2,(1,10)])
sage: M0 = ModularSymbols(11,4,base_ring=QQ); M0
Modular Symbols space of dimension 6 for Gamma_0(11) of weight 4
with sign 0 over Rational Field
sage: M0.basis()
([X^2,(0,1)], [X^2,(1,6)], [X^2,(1,7)], [X^2,(1,8)], [X^2,(1,9)], [X^2,(1,10)])
The characteristic polynomial of the Hecke operator has an extra
factor
.
sage: M.T(2).matrix().fcp('x')
(x + 1)^2 * x^5
sage: M0.T(2).matrix().fcp('x')
(x - 9)^2 * (x^2 - 2*x - 2)^2
An ambient space of modular symbols for a congruence subgroup of
.
This class is an abstract base class, so only derived classes should be instantiated.
INPUT:
Return the matrix function to the space defined by
,
.
Note
Users will instead use the simpler interface defined, for example, by hecke_matrix() (see examples).
INPUT:
OUTPUT:
space to the Modular Symbol space defined by
and the
matrices in
.
EXAMPLES:
sage: M = ModularSymbols(37,2)
sage: M._ModularSymbolsAmbient__heilbronn_operator(M,HeilbronnCremona(3))
Hecke module morphism Heilbronn operator(The Cremona-Heilbronn matrices of determinant 3,1) defined by the matrix
[ 4 0 0 0 -1]
[ 0 -1 2 2 -2]
[ 0 2 -1 2 0]
[ 0 0 0 -3 2]
[ 0 0 0 0 1]
Domain: Modular Symbols space of dimension 5 for Gamma_0(37) of weight ...
Codomain: Modular Symbols space of dimension 5 for Gamma_0(37) of weight ...
sage: M.hecke_matrix(3)
[ 4 0 0 0 -1]
[ 0 -1 2 2 -2]
[ 0 2 -1 2 0]
[ 0 0 0 -3 2]
[ 0 0 0 0 1]
Coerce into this modular symbols space. The result is
either an element of self or a subspace of self.
INPUTS:
The allowed input types for are as follows:
Vector - a vector of the same degree. This defines the corresponding linear combination of the basis of self.
ManinSymbol - a Manin symbol of the same weight as the space
ModularSymbolsElement - a modular symbol whose ambient parent is this space of modular symbols. (TODO: make more sophisticated)
0 - the integer 0; results in the 0 modular symbol.
3-tuple - Given a 3-tuple (i,u,v), returns the modular symbol
element defined by the Manin symbol
, where k is the weight.
Note that we must have
.
2-tuple - Given a 2-tuple (u,v), returns the element defined by
the Manin symbol .
2-elements list - Given a list [alpha, beta],
where and
are (coercible to)
cusps, return the modular symbol
. When
the the weight
return
.
3-element list - Given a list [i, alpha, beta],
where is an integer, and
,
are (coercible to) cusps, return the modular symbol
.
If our list is [f, alpha, beta], where
is a homogeneous polynomial in two variables of degree k-2 with
integer coefficients, and alpha and beta are cusps, return the
corresponding sum of modular symbols as an element of self. So if
, return
.
EXAMPLES:
sage: M = ModularSymbols(37,2)
M(0) is the 0 element of the space:
sage: M(0)
0
sage: type(M(0))
<class 'sage.modular.modsym.element.ModularSymbolsElement'>
From a vector of the correct dimension we construct the corresponding linear combination of the basis elements:
sage: M.dimension()
5
sage: M.basis()
((1,0), (1,23), (1,32), (1,34), (1,35))
sage: M(vector([1,2,3,4,5]))
(1,0) + 2*(1,23) + 3*(1,32) + 4*(1,34) + 5*(1,35)
sage: M(vector([1/2,2/3,3/4,4/5,5/6]))
1/2*(1,0) + 2/3*(1,23) + 3/4*(1,32) + 4/5*(1,34) + 5/6*(1,35)
Manin symbols can be converted to elements of the space:
sage: from sage.modular.modsym.manin_symbols import ManinSymbol
sage: ManinSymbol(M.manin_symbols(),(0,2,3))
(2,3)
sage: M(ManinSymbol(M.manin_symbols(),(0,2,3)))
(1,34) - (1,35)
However, it is easier to use one of the following forms.
Either a 3-tuple or a 2-tuple
with
assumed:
sage: M((0,2,3))
(1,34) - (1,35)
sage: M((2,3))
(1,34) - (1,35)
Or a 3-list where
is the degree and
and
are cusps, or a 2-tuple
with
assumed:
sage: M([0,Cusp(1/2),Cusp(0)])
(1,35)
sage: M([Cusp(1/2),Cusp(0)])
(1,35)
Standard comparison function.
EXAMPLES:
sage: ModularSymbols(11,2) == ModularSymbols(11,2) # indirect doctest
True
sage: ModularSymbols(11,2) == ModularSymbols(11,4) # indirect doctest
False
Initialize a space of modular symbols.
INPUT:
EXAMPLES:
sage: ModularSymbols(2,2)
Modular Symbols space of dimension 1 for Gamma_0(2) of weight 2 with sign 0 over Rational Field
Returns the matrix of the action of a 2x2 matrix on this space.
INPUT:
g (list) – where
are integers
defining a
integer matrix.
OUTPUT:
(matrix) The matrix of the action of on this Modular
Symbol space, with respect to the standard basis.
Note
Use _matrix_of_operator_on_modular_symbols for more general
operators.
EXAMPLES:
sage: M = ModularSymbols(11,4,1)
sage: M._action_on_modular_symbols([1,2,3,7])
[ 0 0 5/2 -3/2]
[ 0 0 5/2 -3/2]
[ 0 1 0 0]
[ 0 1 -1/2 1/2]
Return the matrix of the Atkin-Lehner involution .
INPUT:
OUTPUT:
(matrix) The matrix of the involution with respect to
the standard basis.
EXAMPLES: An example at level 29:
sage: M = ModularSymbols((DirichletGroup(29,QQ).0), 2,1); M
Modular Symbols space of dimension 4 and level 29, weight 2, character [-1], sign 1, over Rational Field
sage: w = M._compute_atkin_lehner_matrix(29)
sage: w^2 == 1
True
sage: w.fcp()
(x - 1)^2 * (x + 1)^2
This doesn’t work since the character has order 2:
sage: M = ModularSymbols((DirichletGroup(13).0), 2,1); M
Modular Symbols space of dimension 0 and level 13, weight 2, character [zeta12], sign 1, over Cyclotomic Field of order 12 and degree 4
sage: M._compute_atkin_lehner_matrix(13)
...
ValueError: Atkin-Lehner only leaves space invariant when character is trivial or quadratic. In general it sends M_k(chi) to M_k(1/chi)
Note that Atkin-Lehner does make sense on ,
but doesn’t commute with the Hecke operators:
sage: M = ModularSymbols(Gamma1(13),2)
sage: w = M.atkin_lehner_operator(13).matrix()
sage: t = M.T(2).matrix()
sage: t*w == w*t
False
sage: w^2 == 1
True
Return the matrix of the dual Hecke operator .
INPUT:
OUTPUT:
(matrix) The matrix of the dual od .
EXAMPLES:
sage: M = ModularSymbols(11,4,1)
sage: M._compute_dual_hecke_matrix(5)
[126 0 0 0]
[ 2 63 38 22]
[ 11 33 82 121]
[-13 30 6 -17]
Return the matrix of the Hecke operator .
INPUT:
Note
does not have to be, prime despite the function name.
OUTPUT:
(matrix) The matrix of the Hecke operator on this
space, with respect to its standard basis.
ALGORITHM:
Uses Heilbronn-Cremonma matrices of is prime, else use
Heilbronn-Merel matrices.
EXAMPLES:
We first compute some examples for Gamma0(N):
sage: m = ModularSymbols(2, weight=4)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^2 - 9*x + 8
sage: m = ModularSymbols(1,weight=12)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^3 - 2001*x^2 - 97776*x - 1180224
sage: m._compute_hecke_matrix_prime(13).charpoly('x')
x^3 - 1792159238562*x^2 - 2070797989680255444*x - 598189440899986203208472
sage: m = ModularSymbols(1,weight=12, sign=-1)
sage: m._compute_hecke_matrix_prime(5)
[4830]
sage: m._compute_hecke_matrix_prime(23)
[18643272]
sage: m = ModularSymbols(3,4)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^2 - 18*x + 81
sage: m = ModularSymbols(6,4)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^6 - 14*x^5 + 29*x^4 + 172*x^3 - 124*x^2 - 320*x + 256
sage: m._compute_hecke_matrix_prime(3).charpoly('x')
x^6 - 50*x^5 + 511*x^4 + 3012*x^3 - 801*x^2 - 9234*x + 6561
sage: m = ModularSymbols(15,4, sign=-1)
sage: m._compute_hecke_matrix_prime(3).charpoly('x')
x^4 - 2*x^3 + 18*x^2 + 18*x - 243
sage: m = ModularSymbols(6,4)
sage: m._compute_hecke_matrix_prime(7).charpoly('x')
x^6 - 1344*x^5 + 666240*x^4 - 140462080*x^3 + 8974602240*x^2 + 406424518656*x + 3584872677376
sage: m = ModularSymbols(4,4)
sage: m._compute_hecke_matrix_prime(3).charpoly('x')
x^3 - 84*x^2 + 2352*x - 21952
We now compute some examples for modular symbols on Gamma1(N):
sage: m = ModularSymbols(Gamma1(13),2, sign=-1)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^2 + 3*x + 3
The following is an example with odd weight:
sage: m = ModularSymbols(Gamma1(5),3)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^4 - 10*x^3 + 50*x^2 - 170*x + 289
This example has composite conductor and weight2 dividing the conductor and nontrivial sign:
sage: m = ModularSymbols(Gamma1(9),3, sign=1)
sage: m._compute_hecke_matrix_prime(3).charpoly('x')
x^6 + 3*x^4 - 19*x^3 + 24*x^2 - 9*x
In some situations we do not need all the rows of the result, and can thereby save time:
sage: m = ModularSymbols(1,weight=12) sage: m._compute_hecke_matrix_prime(2) [ -24 0 0] [ 0 -24 0] [4860 0 2049] sage: m._compute_hecke_matrix_prime(2,rows=[0,1]) [-24 0 0] [ 0 -24 0] sage: m._compute_hecke_matrix_prime(2,rows=[1,2]) [ 0 -24 0] [4860 0 2049]
Return the subspace of self that is fixed under the star involution.
INPUT:
OUTPUT:
A subspace of modular symbols
EXAMPLES:
sage: ModularSymbols(1,12,0,GF(5)).minus_submodule() ## indirect doctest
Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(1) of weight 12 with sign 0 over Finite Field of size 5
Return the matrix of the level-lowering degeneracy map.
INPUT:
OUTPUT:
(matrix) The matrix of the degeneracy map from this space of
level to the space of level level dividing
.
is a divisor of the quotient.
EXAMPLES:
sage: M = ModularSymbols(22,2)
sage: M._degeneracy_lowering_matrix(11,2)
[ 1 0 0]
[ 0 1 -1]
[ 0 0 -1]
[ 0 1 0]
[ 0 0 0]
[-1 0 1]
[-1 0 0]
Return the matrix of the level-raising degeneracy map. This is calculated
by composing the level-raising matrix for
with a Hecke operator.
INPUT:
OUTPUT:
(matrix) The matrix of the degeneracy map from this space of
level to the space of level level (a multiple of
).
is a divisor of the quotient.
EXAMPLES:
sage: ModularSymbols(11, 2)._degeneracy_raising_matrix(22, 1)
[ 1 0 0 0 0 -1 -1]
[ 0 1 0 -3 1 1 -1]
[ 0 1 1 -1 -1 0 0]
sage: ModularSymbols(11, 2)._degeneracy_raising_matrix(22, 2)
[ 2 0 0 0 1 0 -1]
[ 0 0 -1 3 -1 -1 1]
[ 0 -1 -1 1 0 1 -1]
Return the matrix of the degeneracy map to the given level (which must be a multiple of the level of self).
Note
Not implemented in the base class, only in the derived classes.
EXAMPLES:
sage: M = ModularSymbols(37,4)
sage: M._degeneracy_raising_matrix_1(74)
20 x 58 dense matrix over Rational Field
Latex representation of this Modular Symbols space.
EXAMPLES:
sage: m = ModularSymbols(11,weight=12)
sage: latex(m) # indirect doctest
\mathrm{ModSym}_{12}(\Gamma_0(11),\text{[1]};\Bold{Q})
Returns the matrix of a modular symbols operator.
Note
Users will instead use the simpler interface defined, for example, by hecke_matrix() (see examples).
INPUT:
OUTPUT:
(matrix) The matrix of the operator
where is the formal linear fractional transformation on modular
symbols, with respect to the standard basis.
EXAMPLES:
sage: M = ModularSymbols(37,2)
sage: M._matrix_of_operator_on_modular_symbols(M,HeilbronnCremona(3))
[ 4 0 0 0 0]
[ 0 -3 1 1 0]
[ 0 3 0 5 -2]
[ 0 -3 1 -5 3]
[ 0 0 2 3 -3]
Return the modular symbol in this space.
INPUT:
OUTPUT:
(ModularSymbol) The modular symbol .
EXAMPLES:
sage: M = ModularSymbols(11,4,1)
sage: M._modular_symbol_0_to_alpha(Cusp(3/5))
11*[X^2,(1,7)] + 33*[X^2,(1,9)] - 20*[X^2,(1,10)]
sage: M._modular_symbol_0_to_alpha(Cusp(3/5),1)
15/2*[X^2,(1,7)] + 35/2*[X^2,(1,9)] - 10*[X^2,(1,10)]
sage: M._modular_symbol_0_to_alpha(Cusp(Infinity))
-[X^2,(1,10)]
sage: M._modular_symbol_0_to_alpha(Cusp(Infinity),1)
0
String representation of this Modular Symbols space.
EXAMPLES:
sage: m = ModularSymbols(1,weight=12)
sage: m # indirect doctest
Modular Symbols space of dimension 3 for Gamma_0(1) of weight 12 with sign 0 over Rational Field
Return the boundary map to the corresponding space of boundary modular symbols.
EXAMPLES:
sage: ModularSymbols(20,2).boundary_map()
Hecke module morphism boundary map defined by the matrix
[ 1 -1 0 0 0 0]
[ 0 1 -1 0 0 0]
[ 0 1 0 -1 0 0]
[ 0 0 0 -1 1 0]
[ 0 1 0 -1 0 0]
[ 0 0 1 -1 0 0]
[ 0 1 0 0 0 -1]
Domain: Modular Symbols space of dimension 7 for Gamma_0(20) of weight ...
Codomain: Space of Boundary Modular Symbols for Congruence Subgroup Gamma0(20) ...
sage: type(ModularSymbols(20,2).boundary_map())
<class 'sage.modular.hecke.morphism.HeckeModuleMorphism_matrix'>
Return the subspace of boundary modular symbols of this modular symbols ambient space.
EXAMPLES:
sage: ModularSymbols(20,2).boundary_space()
Space of Boundary Modular Symbols for Congruence Subgroup Gamma0(20) of weight 2 and over Rational Field
sage: ModularSymbols(20,2).dimension()
7
sage: ModularSymbols(20,2).boundary_space().dimension()
6
Return compact systems of eigenvalues for each Galois conjugacy class of cuspidal newforms in this ambient space.
INPUT:
OUTPUT:
EXAMPLES:
sage: M = ModularSymbols(43,2,1)
sage: X = M.compact_newform_eigenvalues(prime_range(10))
sage: X[0][0] * X[0][1]
(-2, -2, -4, 0)
sage: X[1][0] * X[1][1]
(alpha1, -alpha1, -alpha1 + 2, alpha1 - 2)
sage: M = ModularSymbols(DirichletGroup(24,QQ).1,2,sign=1)
sage: M.compact_newform_eigenvalues(prime_range(10),'a')
[([-1/2 -1/2]
[ 1/2 -1/2]
[ -1 1]
[ -2 0], (1, -2*a0 - 1))]
sage: a = M.compact_newform_eigenvalues([1..10],'a')[0]
sage: a[0]*a[1]
(1, a0, a0 + 1, -2*a0 - 2, -2*a0 - 2, -a0 - 2, -2, 2*a0 + 4, -1, 2*a0 + 4)
sage: M = ModularSymbols(DirichletGroup(13).0^2,2,sign=1)
sage: M.compact_newform_eigenvalues(prime_range(10),'a')
[([ -zeta6 - 1]
[ 2*zeta6 - 2]
[-2*zeta6 + 1]
[ 0], (1))]
sage: a = M.compact_newform_eigenvalues([1..10],'a')[0]
sage: a[0]*a[1]
(1, -zeta6 - 1, 2*zeta6 - 2, zeta6, -2*zeta6 + 1, -2*zeta6 + 4, 0, 2*zeta6 - 1, -zeta6, 3*zeta6 - 3)
Compute and cache the presentation of this space.
EXAMPLES:
sage: ModularSymbols(11,2).compute_presentation() # no output
The cuspidal submodule of this modular symbols ambient space.
EXAMPLES:
sage: M = ModularSymbols(12,2,0,GF(5)) ; M
Modular Symbols space of dimension 5 for Gamma_0(12) of weight 2 with sign 0 over Finite Field of size 5
sage: M.cuspidal_submodule()
Modular Symbols subspace of dimension 0 of Modular Symbols space of dimension 5 for Gamma_0(12) of weight 2 with sign 0 over Finite Field of size 5
sage: ModularSymbols(1,24,-1).cuspidal_submodule()
Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 2 for Gamma_0(1) of weight 24 with sign -1 over Rational Field
The cuspidal submodule of the cuspidal submodule is itself:
sage: M = ModularSymbols(389)
sage: S = M.cuspidal_submodule()
sage: S.cuspidal_submodule() is S
True
Return the set of cusps for this modular symbols space.
EXAMPLES:
sage: ModularSymbols(20,2).cusps()
[Infinity, 0, -1/4, 1/5, -1/2, 1/10]
Return the matrix of the dual star involution, which is induced by complex conjugation on the linear dual of modular symbols.
EXAMPLES:
sage: ModularSymbols(20,2).dual_star_involution_matrix()
[1 0 0 0 0 0 0]
[0 1 0 0 0 0 0]
[0 0 0 0 1 0 0]
[0 0 0 1 0 0 0]
[0 0 1 0 0 0 0]
[0 0 0 0 0 1 0]
[0 0 0 0 0 0 1]
Return the Eisenstein submodule of this space of modular symbols.
EXAMPLES:
sage: ModularSymbols(20,2).eisenstein_submodule()
Modular Symbols subspace of dimension 5 of Modular Symbols space of dimension 7 for Gamma_0(20) of weight 2 with sign 0 over Rational Field
Creates and returns an element of self from a modular symbol, if possible.
INPUT:
OUTPUT:
ModularSymbol - a modular symbol with parent self.
EXAMPLES:
sage: M = ModularSymbols(11,4,1)
sage: M.T(3)
Hecke operator T_3 on Modular Symbols space of dimension 4 for Gamma_0(11) of weight 4 with sign 1 over Rational Field
sage: M.T(3)(M.0)
28*[X^2,(0,1)] + 2*[X^2,(1,7)] - [X^2,(1,9)] - [X^2,(1,10)]
sage: M.T(3)(M.0).element()
(28, 2, -1, -1)
Returns a list of pairs where
is spaces
of modular symbols and self is isomorphic to the direct sum of the
as a module over the anemic Hecke algebra adjoin
the star involution. The cuspidal
are all simple, but
the Eisenstein factors need not be simple.
EXAMPLES:
sage: ModularSymbols(Gamma0(22), 2).factorization()
(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)^2 *
(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)^2 *
(Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 7 for Gamma_0(22) of weight 2 with sign 0 over Rational Field)
sage: ModularSymbols(1,6,0,GF(2)).factorization()
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(1) of weight 6 with sign 0 over Finite Field of size 2) *
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(1) of weight 6 with sign 0 over Finite Field of size 2)
sage: ModularSymbols(18,2).factorization()
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 for Gamma_0(18) of weight 2 with sign 0 over Rational Field) *
(Modular Symbols subspace of dimension 5 of Modular Symbols space of dimension 7 for Gamma_0(18) of weight 2 with sign 0 over Rational Field)
sage: M = ModularSymbols(DirichletGroup(38,CyclotomicField(3)).0^2, 2, +1); M
Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2
sage: M.factorization() # long time (about 8 seconds)
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2) *
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2) *
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2) *
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2)
Returns a list of pairs where
is spaces
of modular symbols and self is isomorphic to the direct sum of the
as a module over the anemic Hecke algebra adjoin
the star involution. The cuspidal
are all simple, but
the Eisenstein factors need not be simple.
EXAMPLES:
sage: ModularSymbols(Gamma0(22), 2).factorization()
(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)^2 *
(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)^2 *
(Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 7 for Gamma_0(22) of weight 2 with sign 0 over Rational Field)
sage: ModularSymbols(1,6,0,GF(2)).factorization()
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(1) of weight 6 with sign 0 over Finite Field of size 2) *
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(1) of weight 6 with sign 0 over Finite Field of size 2)
sage: ModularSymbols(18,2).factorization()
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 for Gamma_0(18) of weight 2 with sign 0 over Rational Field) *
(Modular Symbols subspace of dimension 5 of Modular Symbols space of dimension 7 for Gamma_0(18) of weight 2 with sign 0 over Rational Field)
sage: M = ModularSymbols(DirichletGroup(38,CyclotomicField(3)).0^2, 2, +1); M
Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2
sage: M.factorization() # long time (about 8 seconds)
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2) *
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2) *
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2) *
(Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 7 and level 38, weight 2, character [zeta3], sign 1, over Cyclotomic Field of order 3 and degree 2)
Return the -structure of this modular symbols
space, generated by all integral modular symbols.
INPUT:
ALGORITHM: It suffices to consider lattice generated by the free
generating symbols after quotienting
out by the
(and
) relations, since the
quotient by these relations is the same over any ring.
EXAMPLES: In weight 2 the rational basis is often integral.
sage: M = ModularSymbols(11,2)
sage: M.integral_structure()
Free module of degree 3 and rank 3 over Integer Ring
Echelon basis matrix:
[1 0 0]
[0 1 0]
[0 0 1]
This is rarely the case in higher weight:
sage: M = ModularSymbols(6,4)
sage: M.integral_structure()
Free module of degree 6 and rank 6 over Integer Ring
Echelon basis matrix:
[ 1 0 0 0 0 0]
[ 0 1 0 0 0 0]
[ 0 0 1/2 1/2 1/2 1/2]
[ 0 0 0 1 0 0]
[ 0 0 0 0 1 0]
[ 0 0 0 0 0 1]
Here is an example involving .
sage: M = ModularSymbols(Gamma1(5),6)
sage: M.integral_structure()
Free module of degree 10 and rank 10 over Integer Ring
Echelon basis matrix:
[ 1 0 0 0 0 0 0 0 0 0]
[ 0 1 0 0 0 0 0 0 0 0]
[ 0 0 1/102 0 5/204 1/136 23/24 3/17 43/136 69/136]
[ 0 0 0 1/48 0 1/48 23/24 1/6 1/8 17/24]
[ 0 0 0 0 1/24 0 23/24 1/3 1/6 1/2]
[ 0 0 0 0 0 1/24 23/24 1/3 11/24 5/24]
[ 0 0 0 0 0 0 1 0 0 0]
[ 0 0 0 0 0 0 0 1/2 0 1/2]
[ 0 0 0 0 0 0 0 0 1/2 1/2]
[ 0 0 0 0 0 0 0 0 0 1]
Returns True if this space is cuspidal, else False.
EXAMPLES:
sage: M = ModularSymbols(20,2)
sage: M.is_cuspidal()
False
sage: S = M.cuspidal_subspace()
sage: S.is_cuspidal()
True
sage: S = M.eisenstein_subspace()
sage: S.is_cuspidal()
False
Returns True if this space is Eisenstein, else False.
EXAMPLES:
sage: M = ModularSymbols(20,2)
sage: M.is_eisenstein()
False
sage: S = M.eisenstein_submodule()
sage: S.is_eisenstein()
True
sage: S = M.cuspidal_subspace()
sage: S.is_eisenstein()
False
Return a list of indices into the list of Manin generators (see
self.manin_generators()) such that those symbols
form a basis for the quotient of the -vector
space spanned by Manin symbols modulo the relations.
EXAMPLES:
sage: M = ModularSymbols(2,2)
sage: M.manin_basis()
[1]
sage: [M.manin_generators()[i] for i in M.manin_basis()]
[(1,0)]
sage: M = ModularSymbols(6,2)
sage: M.manin_basis()
[1, 10, 11]
sage: [M.manin_generators()[i] for i in M.manin_basis()]
[(1,0), (3,1), (3,2)]
Return list of all Manin symbols for this space. These are the generators in the presentation of this space by Manin symbols.
EXAMPLES:
sage: M = ModularSymbols(2,2)
sage: M.manin_generators()
[(0,1), (1,0), (1,1)]
sage: M = ModularSymbols(1,6)
sage: M.manin_generators()
[[Y^4,(0,0)], [X*Y^3,(0,0)], [X^2*Y^2,(0,0)], [X^3*Y,(0,0)], [X^4,(0,0)]]
Return the matrix expressing the manin symbol generators in terms of the basis.
EXAMPLES:
sage: ModularSymbols(11,2).manin_gens_to_basis()
[-1 0 0]
[ 1 0 0]
[ 0 0 0]
[ 0 0 1]
[ 0 -1 1]
[ 0 -1 0]
[ 0 0 -1]
[ 0 0 -1]
[ 0 1 -1]
[ 0 1 0]
[ 0 0 1]
[ 0 0 0]
Construct a Manin Symbol from the given data.
INPUT:
OUTPUT:
(ManinSymbol) the monomial Manin Symbol associated to
, with
if not supplied, corresponding to the
symbol
.
EXAMPLES:
sage: M = ModularSymbols(11,4,1)
sage: M.manin_symbol([2,5,6])
[X^2,(1,10)]
Return the list of Manin symbols for this modular symbols ambient space.
EXAMPLES:
sage: ModularSymbols(11,2).manin_symbols()
Manin Symbol List of weight 2 for Gamma0(11)
A list of Manin symbols that form a basis for the ambient space self. INPUT:
OUTPUT:
EXAMPLES:
sage: m = ModularSymbols(23)
sage: m.manin_symbols_basis()
[(1,0), (1,17), (1,19), (1,20), (1,21)]
sage: m = ModularSymbols(6, weight=4, sign=-1)
sage: m.manin_symbols_basis()
[[X^2,(2,1)]]
Create a modular symbol in this space.
INPUT:
x (list) – a list of either 2 or 3 entries:
- 2 entries:
where
and
are cusps;
- 3 entries:
where
and
and
are cusps;
check (bool, default True) – flag that determines whether the input x needs processing: use check=False for efficiency if the input x is a list of length 3 whose first entry is an Integer, and whose second and third entries are Cusps (see examples).
OUTPUT:
(Modular Symbol) The modular symbol . or
.
EXAMPLES:
sage: set_modsym_print_mode('modular')
sage: M = ModularSymbols(11)
sage: M.modular_symbol([2/11, oo])
-{-1/9, 0}
sage: M.1
{-1/8, 0}
sage: M.modular_symbol([-1/8, 0])
{-1/8, 0}
sage: M.modular_symbol([0, -1/8, 0])
{-1/8, 0}
sage: M.modular_symbol([10, -1/8, 0])
...
ValueError: The first entry of the tuple (=[10, -1/8, 0]) must be an integer between 0 and k-2 (=0).
sage: N = ModularSymbols(6,4)
sage: set_modsym_print_mode('manin')
sage: N([1,Cusp(-1/4),Cusp(0)])
17/2*[X^2,(2,3)] - 9/2*[X^2,(2,5)] + 15/2*[X^2,(3,1)] - 15/2*[X^2,(3,2)]
sage: N([1,Cusp(-1/2),Cusp(0)])
1/2*[X^2,(2,3)] + 3/2*[X^2,(2,5)] + 3/2*[X^2,(3,1)] - 3/2*[X^2,(3,2)]
Use check=False for efficiency if the input x is a list of length 3 whose first entry is an Integer, and whose second and third entries are cusps:
sage: M.modular_symbol([0, Cusp(2/11), Cusp(oo)], check=False)
-(1,9)
sage: set_modsym_print_mode() # return to default.
Construct a modular symbol sum.
INPUT:
OUTPUT:
The sum as an
element of this modular symbol space.
EXAMPLES:
sage: M = ModularSymbols(11,4) sage: R.<X,Y>=QQ[] sage: M.modular_symbol_sum([X*Y,Cusp(0),Cusp(Infinity)]) -3/14*[X^2,(1,6)] + 1/14*[X^2,(1,7)] - 1/14*[X^2,(1,8)] + 1/2*[X^2,(1,9)] - 2/7*[X^2,(1,10)]
Returns a space of modular symbols with the same defining properties (weight, level, etc.) as this space except with given sign.
INPUT:
OUTPUT:
(ModularSymbolsAmbient) A space of modular symbols with the same defining properties (weight, level, etc.) as this space except with given sign.
EXAMPLES:
sage: M = ModularSymbols(Gamma0(11),2,sign=0)
sage: M
Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field
sage: M.modular_symbols_of_sign(-1)
Modular Symbols space of dimension 1 for Gamma_0(11) of weight 2 with sign -1 over Rational Field
sage: M = ModularSymbols(Gamma1(11),2,sign=0)
sage: M.modular_symbols_of_sign(-1)
Modular Symbols space of dimension 1 for Gamma_1(11) of weight 2 with sign -1 and over Rational Field
Returns a space of modular symbols with the same defining
properties (weight, sign, etc.) as this space except with weight
.
INPUT:
OUTPUT:
(ModularSymbolsAmbient) A space of modular symbols with the same defining properties (level, sign) as this space except with given weight.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(6),2,sign=0)
sage: M.modular_symbols_of_weight(3)
Modular Symbols space of dimension 4 for Gamma_1(6) of weight 3 with sign 0 and over Rational Field
Returns the new or -new submodule of this modular symbols ambient space.
INPUT:
OUTPUT:
The new or -new submodule of this modular symbols ambient space.
EXAMPLES:
sage: ModularSymbols(100).new_submodule()
Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 31 for Gamma_0(100) of weight 2 with sign 0 over Rational Field
sage: ModularSymbols(389).new_submodule()
Modular Symbols space of dimension 65 for Gamma_0(389) of weight 2 with sign 0 over Rational Field
Return a P1list of the level of this modular symbol space.
EXAMPLES:
sage: ModularSymbols(11,2).p1list()
The projective line over the integers modulo 11
Returns the rank of this modular symbols ambient space.
OUTPUT:
(int) The rank of this space of modular symbols.
EXAMPLES:
sage: M = ModularSymbols(389)
sage: M.rank()
65
sage: ModularSymbols(11,sign=0).rank()
3
sage: ModularSymbols(100,sign=0).rank()
31
sage: ModularSymbols(22,sign=1).rank()
5
sage: ModularSymbols(1,12).rank()
3
sage: ModularSymbols(3,4).rank()
2
sage: ModularSymbols(8,6,sign=-1).rank()
3
Return the star involution on this modular symbols space.
OUTPUT:
(matrix) The matrix of the star involution on this space, which is induced by complex conjugation on modular symbols, with respect to the standard basis.
EXAMPLES:
sage: ModularSymbols(20,2).star_involution()
Hecke module morphism Star involution on Modular Symbols space of dimension 7 for Gamma_0(20) of weight 2 with sign 0 over Rational Field defined by the matrix
[1 0 0 0 0 0 0]
[0 1 0 0 0 0 0]
[0 0 0 0 1 0 0]
[0 0 0 1 0 0 0]
[0 0 1 0 0 0 0]
[0 0 0 0 0 1 0]
[0 0 0 0 0 0 1]
Domain: Modular Symbols space of dimension 7 for Gamma_0(20) of weight ...
Codomain: Modular Symbols space of dimension 7 for Gamma_0(20) of weight ...
Return the submodule with given generators or free module .
INPUT:
M - either a submodule of this ambient free module, or generators for a submodule;
useful to speed up certain calculations; it is the corresponding submodule of the ambient dual module;
a submodule, i.e. is invariant under all Hecke operators.
OUTPUT:
A subspace of this modular symbol space.
EXAMPLES:
sage: M = ModularSymbols(11)
sage: M.submodule([M.0])
...
ValueError: The submodule must be invariant under all Hecke operators.
sage: M.eisenstein_submodule().basis()
((1,0) - 1/5*(1,9),)
sage: M.basis()
((1,0), (1,8), (1,9))
sage: M.submodule([M.0 - 1/5*M.2])
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
Note
It would make more sense to only check that is invariant
under the Hecke operators with index coprime to the level.
Unfortunately, I do not know a reasonable algorithm for
determining whether a module is invariant under just the
anemic Hecke algebra, since I do not know an analogue of
the Sturm bound for the anemic Hecke algebra. - William
Stein, 2007-07-27
Return the twisted winding element of given degree and character.
INPUT:
OUTPUT:
(modular symbol) The so-called ‘twisted winding element’:
Note
This will only work if the base ring of the modular symbol space contains the character values.
EXAMPLES:
sage: eps = DirichletGroup(5)[2]
sage: K = eps.base_ring()
sage: M = ModularSymbols(37,2,0,K)
sage: M.twisted_winding_element(0,eps)
2*(1,23) + (-2)*(1,32) + 2*(1,34)
Modular symbols for of integer weight
over the field
.
INPUT:
OUTPUT:
The space of modular symbols of weight , trivial character, level
and given sign.
EXAMPLES:
sage: ModularSymbols(Gamma0(12),2)
Modular Symbols space of dimension 5 for Gamma_0(12) of weight 2 with sign 0 over Rational Field
Initialize a space of modular symbols. INPUT:
INPUT:
OUTPUT:
The space of modular symbols of weight 2, trivial character, level N and given sign.
EXAMPLES:
sage: M = ModularSymbols(Gamma0(12),2)
Compute and return the matrix of the -th Hecke operator.
EXAMPLES:
sage: m = ModularSymbols(37,2)
sage: m._compute_hecke_matrix_prime(2).charpoly('x')
x^5 + x^4 - 8*x^3 - 12*x^2
Return the dimension of the new cuspidal subspace, via the formula.
EXAMPLES:
sage: M = ModularSymbols(100,2) sage: M._cuspidal_new_submodule_dimension_formula() 2 sage: M.cuspidal_subspace().new_subspace().dimension() 2
Return the dimension of the cuspidal subspace, using the formula.
EXAMPLES:
sage: M = ModularSymbols(37,4)
sage: M.cuspidal_subspace().dimension()
18
sage: M._cuspidal_submodule_dimension_formula()
18
Return the dimension of this space using the formula.
EXAMPLES:
sage: M = ModularSymbols(37,6)
sage: M.dimension()
32
sage: M._dimension_formula()
32
Return , where
is the
`i`th basis vector of this ambient space.
INPUT:
OUTPUT:
EXAMPLES:
sage: M = ModularSymbols(43,2,1)
sage: M._hecke_image_of_ith_basis_vector(2, 0)
3*(1,0) - 2*(1,33)
sage: M.hecke_operator(2)(M.0)
3*(1,0) - 2*(1,33)
sage: M._hecke_image_of_ith_basis_vector(6, 1)
-2*(1,33)
sage: M.hecke_operator(6)(M.1)
-2*(1,33)
Return images of the -th standard basis vector under the
Hecke operators
for all integers in
.
INPUT:
OUTPUT:
EXAMPLES:
sage: M = ModularSymbols(46,2,-1)
sage: M._hecke_images(1,[3,4,5,6])
[ 0 1 -2 2 0]
[ 2 -3 0 0 1]
[ 0 -2 2 -2 0]
[-5 3 -1 1 0]
sage: v = M.basis()[1]
sage: M.T(3)(v).element()
(0, 1, -2, 2, 0)
sage: M.T(4)(v).element()
(2, -3, 0, 0, 1)
sage: M.T(5)(v).element()
(0, -2, 2, -2, 0)
sage: M.T(6)(v).element()
(-5, 3, -1, 1, 0)
Return the space of boundary modular symbols for this space.
EXAMPLES:
sage: M = ModularSymbols(100,2)
sage: M.boundary_space()
Space of Boundary Modular Symbols for Congruence Subgroup Gamma0(100) of weight 2 and over Rational Field
Space of modular symbols with given weight, character, and sign.
INPUT:
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0)
sage: eps.order()
2
sage: ModularSymbols(eps, 2)
Modular Symbols space of dimension 0 and level 4, weight 2, character [-1], sign 0, over Rational Field
sage: ModularSymbols(eps, 3)
Modular Symbols space of dimension 2 and level 4, weight 3, character [-1], sign 0, over Rational Field
We next create a space with character of order bigger than 2.
sage: eps = DirichletGroup(5).gen(0)
sage: eps # has order 4
[zeta4]
sage: ModularSymbols(eps, 2).dimension()
0
sage: ModularSymbols(eps, 3).dimension()
2
Here is another example:
sage: G, e = DirichletGroup(5).objgen()
sage: M = ModularSymbols(e,3)
sage: loads(M.dumps()) == M
True
Return the dimension for the new cuspidal subspace of this space, given by the formula.
EXAMPLES:
sage: G, e = DirichletGroup(50).objgen()
sage: M = ModularSymbols(e,3)
sage: M.dimension()
30
sage: M._cuspidal_new_submodule_dimension_formula()
10
Return the dimension for the cuspidal subspace of this space, given by the formula.
EXAMPLES:
sage: G, e = DirichletGroup(50).objgen()
sage: M = ModularSymbols(e^2,2)
sage: M.dimension()
16
sage: M._cuspidal_submodule_dimension_formula()
12
Return the matrix of the degeneracy raising map to level level.
INPUT:
OUTPUT:
(matrix) The matrix of the degeneracy raising matrix to the higher level.
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0)
sage: M = ModularSymbols(eps, 3); M
Modular Symbols space of dimension 2 and level 4, weight 3, character [-1], sign 0, over Rational Field
sage: M._degeneracy_raising_matrix_1(20)
[ 1 0 0 0 -1 -1 3 1 0 2 -3 0]
[ 0 5 1 -2 -3 3 0 4 -1 5 -7 -1]
Return None: we have no dimension formula for spaces.
EXAMPLES:
sage: eps = DirichletGroup(5).gen(0)
sage: M = ModularSymbols(eps, 2)
sage: M.dimension()
0
sage: M._dimension_formula()
Return images of the -th standard basis vector under the
Hecke operators
for all integers in
.
INPUT:
OUTPUT:
EXAMPLES:
sage: G, e = DirichletGroup(50,QQ).objgen()
sage: M = ModularSymbols(e^2,2)
sage: M.dimension()
15
sage: M._hecke_images(8,range(1,5))
[ 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0]
[ 0 1 0 2 0 -1 1 1 0 0 0 0 0 0 0]
[ 0 1 1 -1 -1 0 -1 1 1 0 1 2 0 -2 2]
INPUT:
OUTPUT: a matrix, which represents the operator
where g.x is the formal linear fractional transformation on modular symbols.
EXAMPLES:
sage: G, e = DirichletGroup(5).objgen()
sage: M = ModularSymbols(e,3)
sage: M.dimension()
2
sage: M._matrix_of_operator_on_modular_symbols(M,HeilbronnCremona(3))
[ 6 6]
[ 0 10]
Return a string representation of this space.
EXAMPLES:
sage: G, e = DirichletGroup(5).objgen()
sage: M = ModularSymbols(e,3)
sage: M # indirect doctest
Modular Symbols space of dimension 2 and level 5, weight 3, character [zeta4], sign 0, over Cyclotomic Field of order 4 and degree 2
Return the space of boundary modular symbols for this space.
EXAMPLES:
sage: eps = DirichletGroup(5).gen(0)
sage: M = ModularSymbols(eps, 2)
sage: M.boundary_space()
Boundary Modular Symbols space of level 5, weight 2, character [zeta4] and dimension 0 over Cyclotomic Field of order 4 and degree 2
Return the Manin symbol list of this modular symbol space.
EXAMPLES:
sage: eps = DirichletGroup(5).gen(0)
sage: M = ModularSymbols(eps, 2)
sage: M.manin_symbols()
Manin Symbol List of weight 2 for Gamma1(5) with character [zeta4]
sage: len(M.manin_symbols())
6
Returns a space of modular symbols with the same parameters as
this space except with level .
INPUT:
OUTPUT:
(Modular Symbol space) A space of modular symbols with the
same defining properties (weight, sign, etc.) as this space
except with level .
EXAMPLES:
sage: eps = DirichletGroup(5).gen(0)
sage: M = ModularSymbols(eps, 2); M
Modular Symbols space of dimension 0 and level 5, weight 2, character [zeta4], sign 0, over Cyclotomic Field of order 4 and degree 2
sage: M.modular_symbols_of_level(15)
Modular Symbols space of dimension 0 and level 15, weight 2, character [1, zeta4], sign 0, over Cyclotomic Field of order 4 and degree 2
Returns a space of modular symbols with the same defining properties (weight, level, etc.) as this space except with given sign.
INPUT:
OUTPUT:
(ModularSymbolsAmbient) A space of modular symbols with the same defining properties (weight, level, etc.) as this space except with given sign.
EXAMPLES:
sage: eps = DirichletGroup(5).gen(0)
sage: M = ModularSymbols(eps, 2); M
Modular Symbols space of dimension 0 and level 5, weight 2, character [zeta4], sign 0, over Cyclotomic Field of order 4 and degree 2
sage: M.modular_symbols_of_sign(0) == M
True
sage: M.modular_symbols_of_sign(+1)
Modular Symbols space of dimension 0 and level 5, weight 2, character [zeta4], sign 1, over Cyclotomic Field of order 4 and degree 2
sage: M.modular_symbols_of_sign(-1)
Modular Symbols space of dimension 0 and level 5, weight 2, character [zeta4], sign -1, over Cyclotomic Field of order 4 and degree 2
Returns a space of modular symbols with the same defining
properties (weight, sign, etc.) as this space except with weight
.
INPUT:
OUTPUT:
(ModularSymbolsAmbient) A space of modular symbols with the same defining properties (level, sign) as this space except with given weight.
EXAMPLES:
sage: eps = DirichletGroup(5).gen(0)
sage: M = ModularSymbols(eps, 2); M
Modular Symbols space of dimension 0 and level 5, weight 2, character [zeta4], sign 0, over Cyclotomic Field of order 4 and degree 2
sage: M.modular_symbols_of_weight(3)
Modular Symbols space of dimension 2 and level 5, weight 3, character [zeta4], sign 0, over Cyclotomic Field of order 4 and degree 2
sage: M.modular_symbols_of_weight(2) == M
True
Modular symbols for of integer weight
over the field
.
For weight , it is faster to use ModularSymbols_wt2_g0.
INPUT:
EXAMPLES:
sage: ModularSymbols(1,12)
Modular Symbols space of dimension 3 for Gamma_0(1) of weight 12 with sign 0 over Rational Field
sage: ModularSymbols(1,12, sign=1).dimension()
2
sage: ModularSymbols(15,4, sign=-1).dimension()
4
sage: ModularSymbols(6,6).dimension()
10
sage: ModularSymbols(36,4).dimension()
36
Initialize a space of modular symbols of weight for
, over
.
For weight , it is faster to use
ModularSymbols_wt2_g0.
INPUT:
EXAMPLES:
sage: ModularSymbols(1,12)
Modular Symbols space of dimension 3 for Gamma_0(1) of weight 12 with sign 0 over Rational Field
sage: ModularSymbols(1,12, sign=1).dimension()
2
sage: ModularSymbols(15,4, sign=-1).dimension()
4
sage: ModularSymbols(6,6).dimension()
10
sage: ModularSymbols(36,4).dimension()
36
Return the dimension of the new cuspidal subspace, via the formula.
EXAMPLES:
sage: M = ModularSymbols(100,2) sage: M._cuspidal_new_submodule_dimension_formula() 2 sage: M.cuspidal_subspace().new_subspace().dimension() 2
Return the dimension of the cuspidal subspace, using the formula.
EXAMPLES:
sage: M = ModularSymbols(37,4)
sage: M.cuspidal_subspace().dimension()
18
sage: M._cuspidal_submodule_dimension_formula()
18
Return the matrix of the degeneracy map (with t = 1) to level
, where
is a multiple of the level.
INPUT:
OUTPUT:
(matrix) The matrix of the degeneracy raising map to level level.
EXAMPLES:
sage: M = ModularSymbols(37,4)
sage: M._degeneracy_raising_matrix_1(74)
20 x 58 dense matrix over Rational Field
sage: M.dimension()
20
sage: ModularSymbols(74,4).dimension()
58
Return the dimension of this space using the formula.
EXAMPLES:
sage: M = ModularSymbols(37,6)
sage: M.dimension()
32
sage: M._dimension_formula()
32
Return matrix whose rows are the images of the -th
standard basis vector under the Hecke operators
for
all integers in
.
INPUT:
OUTPUT:
EXAMPLES:
sage: M = ModularSymbols(11,4,1)
sage: M._hecke_images(0,[1,2,3,4])
[ 1 0 0 0]
[ 9 0 1 -1]
[28 2 -1 -1]
[73 2 5 -7]
sage: M.T(1)(M.0).element()
(1, 0, 0, 0)
sage: M.T(2)(M.0).element()
(9, 0, 1, -1)
sage: M.T(3)(M.0).element()
(28, 2, -1, -1)
sage: M.T(4)(M.0).element()
(73, 2, 5, -7)
sage: M = ModularSymbols(12,4)
sage: M._hecke_images(0,[1,2,3,4])
[ 1 0 0 0 0 0 0 0 0 0 0 0]
[ 8 1 -1 -2 2 2 -3 1 -2 3 -1 0]
[ 27 4 -4 -8 8 10 -14 4 -9 14 -5 0]
[ 64 10 -10 -20 20 26 -36 10 -24 38 -14 0]
sage: M.T(1)(M.0).element()
(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
sage: M.T(2)(M.0).element()
(8, 1, -1, -2, 2, 2, -3, 1, -2, 3, -1, 0)
sage: M.T(3)(M.0).element()
(27, 4, -4, -8, 8, 10, -14, 4, -9, 14, -5, 0)
sage: M.T(4)(M.0).element()
(64, 10, -10, -20, 20, 26, -36, 10, -24, 38, -14, 0)
Return the string representation of this Modular Symbols space.
EXAMPLES:
sage: M = ModularSymbols(37,6)
sage: M # indirect doctest
Modular Symbols space of dimension 32 for Gamma_0(37) of weight 6 with sign 0 over Rational Field
Return the space of boundary modular symbols for this space.
EXAMPLES:
sage: M = ModularSymbols(100,2)
sage: M.boundary_space()
Space of Boundary Modular Symbols for Congruence Subgroup Gamma0(100) of weight 2 and over Rational Field
Return the Manin symbol list of this modular symbol space.
EXAMPLES:
sage: M = ModularSymbols(100,4)
sage: M.manin_symbols()
Manin Symbol List of weight 4 for Gamma0(100)
sage: len(M.manin_symbols())
540
Returns a space of modular symbols with the same parameters as
this space except with level .
INPUT:
OUTPUT:
(Modular Symbol space) A space of modular symbols with the
same defining properties (weight, sign, etc.) as this space
except with level .
For example, if self is the space of modular symbols of weight
for
, and level is
, then this function returns
the modular symbol space of weight
for
.
EXAMPLES:
sage: M = ModularSymbols(11)
sage: M.modular_symbols_of_level(22)
Modular Symbols space of dimension 7 for Gamma_0(22) of weight 2 with sign 0 over Rational Field
sage: M = ModularSymbols(Gamma1(6))
sage: M.modular_symbols_of_level(12)
Modular Symbols space of dimension 9 for Gamma_1(12) of weight 2 with sign 0 and over Rational Field
INPUT:
EXAMPLES:
sage: ModularSymbols(Gamma1(17),2)
Modular Symbols space of dimension 25 for Gamma_1(17) of weight 2 with sign 0 and over Rational Field
sage: [ModularSymbols(Gamma1(7),k).dimension() for k in [2,3,4,5]]
[5, 8, 12, 16]
sage: ModularSymbols(Gamma1(7),3)
Modular Symbols space of dimension 8 for Gamma_1(7) of weight 3 with sign 0 and over Rational Field
Initialize a space of modular symbols for Gamma1(N).
INPUT:
EXAMPLES:
sage: ModularSymbols(Gamma1(17),2)
Modular Symbols space of dimension 25 for Gamma_1(17) of weight 2 with sign 0 and over Rational Field
sage: [ModularSymbols(Gamma1(7),k).dimension() for k in [2,3,4,5]]
[5, 8, 12, 16]
sage: M = ModularSymbols(Gamma1(7),3)
Compute and return the matrix of the Hecke operator .
EXAMPLES:
sage: m = ModularSymbols(37,2)
sage: m._compute_hecke_matrix_prime_power(3,4).charpoly('x')
x^5 - 141*x^4 + 2538*x^3 - 14458*x^2 + 21861*x - 9801
Return the dimension of the new cuspidal subspace, via the formula.
EXAMPLES:
sage: M = ModularSymbols(100,2) sage: M._cuspidal_new_submodule_dimension_formula() 2 sage: M.cuspidal_subspace().new_subspace().dimension() 2
Return the dimension of the cuspidal subspace, using the formula.
EXAMPLES:
sage: M = ModularSymbols(37,4)
sage: M.cuspidal_subspace().dimension()
18
sage: M._cuspidal_submodule_dimension_formula()
18
Return the matrix of the degeneracy raising map to level level.
INPUT:
OUTPUT:
(matrix) The matrix of the degeneracy raising matrix to the higher level.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(7),3)
sage: M._degeneracy_raising_matrix_1(21)
8 x 64 dense matrix over Rational Field
sage: M.dimension()
8
sage: ModularSymbols(Gamma1(21),3).dimension()
64
Return the dimension of this space using the formula.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(7),6)
sage: M.dimension()
20
sage: M._dimension_formula()
20
Return a string representation of this space.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(7),3)
sage: M # indirect doctest
Modular Symbols space of dimension 8 for Gamma_1(7) of weight 3 with sign 0 and over Rational Field
Return the space of boundary modular symbols for this space.
EXAMPLES:
sage: M = ModularSymbols(100,2)
sage: M.boundary_space()
Space of Boundary Modular Symbols for Congruence Subgroup Gamma0(100) of weight 2 and over Rational Field
Return the Manin symbol list of this modular symbol space.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(30),4)
sage: M.manin_symbols()
Manin Symbol List of weight 4 for Gamma1(30)
sage: len(M.manin_symbols())
1728
Returns a space of modular symbols with the same parameters as
this space except with level .
INPUT:
OUTPUT:
(Modular Symbol space) A space of modular symbols with the
same defining properties (weight, sign, etc.) as this space
except with level .
For example, if self is the space of modular symbols of weight
for
, and level is
, then this function returns
the modular symbol space of weight
for
.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(30),4); M
Modular Symbols space of dimension 144 for Gamma_1(30) of weight 4 with sign 0 and over Rational Field
sage: M.modular_symbols_of_level(22)
Modular Symbols space of dimension 90 for Gamma_1(22) of weight 4 with sign 0 and over Rational Field
Initialize a space of modular symbols for .
INPUT:
EXAMPLES:
sage: ModularSymbols(GammaH(15,[4]),2)
Modular Symbols space of dimension 9 for Congruence Subgroup Gamma_H(15) with H generated by [4] of weight 2 with sign 0 and over Rational Field
Return matrix of a prime-power Hecke operator.
Note
Not implemented for this class.
EXAMPLES:
sage: M = ModularSymbols(GammaH(15,[4]),2)
sage: M._compute_hecke_matrix_prime_power
<bound method ModularSymbolsAmbient_wtk_gamma_h._compute_hecke_matrix_prime_power of Modular Symbols space of dimension 9 for Congruence Subgroup Gamma_H(15) with H generated by [4] of weight 2 with sign 0 and over Rational Field>
sage: M._compute_hecke_matrix_prime_power(1,2,3)
...
NotImplementedError
Return None: we have no dimension formulas for spaces.
EXAMPLES:
sage: ModularSymbols(GammaH(15,[4]),2)._cuspidal_new_submodule_dimension_formula() is None
True
Return None: we have no dimension formulas for spaces.
EXAMPLES:
sage: ModularSymbols(GammaH(15,[4]),2)._cuspidal_submodule_dimension_formula() is None
True
Return matrix of a degeneracy raising map.
EXAMPLES:
sage: ModularSymbols(GammaH(15,[4]),2)._degeneracy_raising_matrix_1(30)
...
NotImplementedError
Return None: we have no dimension formulas for spaces.
EXAMPLES:
sage: M = ModularSymbols(GammaH(15,[4]),2)
sage: M.dimension()
9
sage: M._dimension_formula()
Return a string representation of this space.
EXAMPLES:
sage: M = ModularSymbols(GammaH(15,[4]),2)
sage: M # indirect doctest
Modular Symbols space of dimension 9 for Congruence Subgroup Gamma_H(15) with H generated by [4] of weight 2 with sign 0 and over Rational Field
Return the space of boundary modular symbols for this space.
EXAMPLES:
sage: M = ModularSymbols(GammaH(15,[4]),2)
sage: M.boundary_space()
Boundary Modular Symbols space for Congruence Subgroup Gamma_H(15) with H generated by [4] of weight 2 over Rational Field
Return the Manin symbol list of this modular symbol space.
EXAMPLES:
sage: M = ModularSymbols(GammaH(15,[4]),2)
sage: M.manin_symbols()
Manin Symbol List of weight 2 for Congruence Subgroup Gamma_H(15) with H generated by [4]
sage: len(M.manin_symbols())
96
Returns a space of modular symbols with the same parameters as
this space except with level .
Note
Not implemented for this class.
TESTS:
sage: M = ModularSymbols(GammaH(15,[4]),2)
sage: M.modular_symbols_of_level(30)
...
NotImplementedError