Modular symbols \(\{\alpha\), \(\beta\}\)#
The ModularSymbol class represents a single modular symbol \(X^i Y^{k-2-i} \{\alpha, \beta\}\).
AUTHOR:
William Stein (2005, 2009)
- class sage.modular.modsym.modular_symbols.ModularSymbol(space, i, alpha, beta)[source]#
Bases:
SageObject
The modular symbol \(X^i\cdot Y^{k-2-i}\cdot \{\alpha, \beta\}\).
- alpha()[source]#
For a symbol of the form \(X^i Y^{k-2-i}\{\alpha, \beta\}\), return \(\alpha\).
EXAMPLES:
sage: s = ModularSymbols(11,4).1.modular_symbol_rep()[0][1]; s X^2*{-1/6, 0} sage: s.alpha() -1/6 sage: type(s.alpha()) <class 'sage.modular.cusps.Cusp'>
>>> from sage.all import * >>> s = ModularSymbols(Integer(11),Integer(4)).gen(1).modular_symbol_rep()[Integer(0)][Integer(1)]; s X^2*{-1/6, 0} >>> s.alpha() -1/6 >>> type(s.alpha()) <class 'sage.modular.cusps.Cusp'>
- apply(g)[source]#
Act on this symbol by the element \(g \in {\rm GL}_2(\QQ)\).
INPUT:
g
– a list[a,b,c,d]
, corresponding to the 2x2 matrix \(\begin{pmatrix} a & b \\ c & d \end{pmatrix} \in {\rm GL}_2(\QQ)\).
OUTPUT:
FormalSum
– a formal sum \(\sum_i c_i x_i\), where \(c_i\) are scalars and \(x_i\) are ModularSymbol objects, such that the sum \(\sum_i c_i x_i\) is the image of this symbol under the action of g. No reduction is performed modulo the relations that hold in self.space().
The action of \(g\) on symbols is by
\[P(X,Y)\{\alpha, \beta\} \mapsto P(dX-bY, -cx+aY) \{g(\alpha), g(\beta)\}.\]Note that for us we have \(P=X^i Y^{k-2-i}\), which simplifies computation of the polynomial part slightly.
EXAMPLES:
sage: s = ModularSymbols(11,2).1.modular_symbol_rep()[0][1]; s {-1/8, 0} sage: a = 1; b = 2; c = 3; d = 4; s.apply([a,b,c,d]) {15/29, 1/2} sage: x = -1/8; (a*x+b)/(c*x+d) 15/29 sage: x = 0; (a*x+b)/(c*x+d) 1/2 sage: s = ModularSymbols(11,4).1.modular_symbol_rep()[0][1]; s X^2*{-1/6, 0} sage: s.apply([a,b,c,d]) 16*X^2*{11/21, 1/2} - 16*X*Y*{11/21, 1/2} + 4*Y^2*{11/21, 1/2} sage: P = s.polynomial_part() sage: X, Y = P.parent().gens() sage: P(d*X-b*Y, -c*X+a*Y) 16*X^2 - 16*X*Y + 4*Y^2 sage: x = -1/6; (a*x+b)/(c*x+d) 11/21 sage: x = 0; (a*x+b)/(c*x+d) 1/2 sage: type(s.apply([a,b,c,d])) <class 'sage.structure.formal_sum.FormalSum'>
>>> from sage.all import * >>> s = ModularSymbols(Integer(11),Integer(2)).gen(1).modular_symbol_rep()[Integer(0)][Integer(1)]; s {-1/8, 0} >>> a = Integer(1); b = Integer(2); c = Integer(3); d = Integer(4); s.apply([a,b,c,d]) {15/29, 1/2} >>> x = -Integer(1)/Integer(8); (a*x+b)/(c*x+d) 15/29 >>> x = Integer(0); (a*x+b)/(c*x+d) 1/2 >>> s = ModularSymbols(Integer(11),Integer(4)).gen(1).modular_symbol_rep()[Integer(0)][Integer(1)]; s X^2*{-1/6, 0} >>> s.apply([a,b,c,d]) 16*X^2*{11/21, 1/2} - 16*X*Y*{11/21, 1/2} + 4*Y^2*{11/21, 1/2} >>> P = s.polynomial_part() >>> X, Y = P.parent().gens() >>> P(d*X-b*Y, -c*X+a*Y) 16*X^2 - 16*X*Y + 4*Y^2 >>> x = -Integer(1)/Integer(6); (a*x+b)/(c*x+d) 11/21 >>> x = Integer(0); (a*x+b)/(c*x+d) 1/2 >>> type(s.apply([a,b,c,d])) <class 'sage.structure.formal_sum.FormalSum'>
- beta()[source]#
For a symbol of the form \(X^i Y^{k-2-i}\{\alpha, \beta\}\), return \(\beta\).
EXAMPLES:
sage: s = ModularSymbols(11,4).1.modular_symbol_rep()[0][1]; s X^2*{-1/6, 0} sage: s.beta() 0 sage: type(s.beta()) <class 'sage.modular.cusps.Cusp'>
>>> from sage.all import * >>> s = ModularSymbols(Integer(11),Integer(4)).gen(1).modular_symbol_rep()[Integer(0)][Integer(1)]; s X^2*{-1/6, 0} >>> s.beta() 0 >>> type(s.beta()) <class 'sage.modular.cusps.Cusp'>
- i()[source]#
For a symbol of the form \(X^i Y^{k-2-i}\{\alpha, \beta\}\), return \(i\).
EXAMPLES:
sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1] sage: s.i() 0 sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1]; s X^22*Y^4*{0, Infinity} sage: s.i() 22
>>> from sage.all import * >>> s = ModularSymbols(Integer(11)).gen(2).modular_symbol_rep()[Integer(0)][Integer(1)] >>> s.i() 0 >>> s = ModularSymbols(Integer(1),Integer(28)).gen(0).modular_symbol_rep()[Integer(0)][Integer(1)]; s X^22*Y^4*{0, Infinity} >>> s.i() 22
- manin_symbol_rep()[source]#
Return a representation of
self
as a formal sum of Manin symbols.The result is not cached.
EXAMPLES:
sage: M = ModularSymbols(11,4) sage: s = M.1.modular_symbol_rep()[0][1]; s X^2*{-1/6, 0} sage: s.manin_symbol_rep() -2*[X*Y,(-1,0)] - [X^2,(-1,0)] - [Y^2,(1,1)] - [X^2,(-6,1)] sage: M(s.manin_symbol_rep()) == M([2,-1/6,0]) True
>>> from sage.all import * >>> M = ModularSymbols(Integer(11),Integer(4)) >>> s = M.gen(1).modular_symbol_rep()[Integer(0)][Integer(1)]; s X^2*{-1/6, 0} >>> s.manin_symbol_rep() -2*[X*Y,(-1,0)] - [X^2,(-1,0)] - [Y^2,(1,1)] - [X^2,(-6,1)] >>> M(s.manin_symbol_rep()) == M([Integer(2),-Integer(1)/Integer(6),Integer(0)]) True
- polynomial_part()[source]#
Return the polynomial part of this symbol, i.e. for a symbol of the form \(X^i Y^{k-2-i}\{\alpha, \beta\}\), return \(X^i Y^{k-2-i}\).
EXAMPLES:
sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1] sage: s.polynomial_part() 1 sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1]; s X^22*Y^4*{0, Infinity} sage: s.polynomial_part() X^22*Y^4
>>> from sage.all import * >>> s = ModularSymbols(Integer(11)).gen(2).modular_symbol_rep()[Integer(0)][Integer(1)] >>> s.polynomial_part() 1 >>> s = ModularSymbols(Integer(1),Integer(28)).gen(0).modular_symbol_rep()[Integer(0)][Integer(1)]; s X^22*Y^4*{0, Infinity} >>> s.polynomial_part() X^22*Y^4
- space()[source]#
The list of Manin symbols to which this symbol belongs.
EXAMPLES:
sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1] sage: s.space() Manin Symbol List of weight 2 for Gamma0(11)
>>> from sage.all import * >>> s = ModularSymbols(Integer(11)).gen(2).modular_symbol_rep()[Integer(0)][Integer(1)] >>> s.space() Manin Symbol List of weight 2 for Gamma0(11)
- weight()[source]#
Return the weight of the modular symbols space to which this symbol belongs; i.e. for a symbol of the form \(X^i Y^{k-2-i}\{\alpha, \beta\}\), return \(k\).
EXAMPLES:
sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1] sage: s.weight() 28
>>> from sage.all import * >>> s = ModularSymbols(Integer(1),Integer(28)).gen(0).modular_symbol_rep()[Integer(0)][Integer(1)] >>> s.weight() 28