Modular symbols {alpha, beta}

The ModularSymbol class represents a single modular symbol XiYk2i{α,β}.

AUTHOR:

  • William Stein (2005, 2009)
class sage.modular.modsym.modular_symbols.ModularSymbol(space, i, alpha, beta)

Bases: sage.structure.sage_object.SageObject

The modular symbol XiYk2i{α,β}.

alpha()

For a symbol of the form XiYk2i{α,β}, return α.

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'>
apply(g)

Act on this symbol by the element gGL2(Q).

INPUT:

  • g – a list [a,b,c,d], corresponding to the 2x2 matrix (abcd)GL2(Q).

OUTPUT:

  • FormalSum – a formal sum icixi, where ci are scalars and xi are ModularSymbol objects, such that the sum icixi 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){α,β}P(dXbY,cx+aY){g(α),g(β)}.

Note that for us we have P=XiYk2i, 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'>
beta()

For a symbol of the form XiYk2i{α,β}, return β.

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'>
i()

For a symbol of the form XiYk2i{α,β}, 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
manin_symbol_rep()

Returns 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
polynomial_part()

Return the polynomial part of this symbol, i.e. for a symbol of the form XiYk2i{α,β}, return XiYk2i.

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
space()

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)
weight()

Return the weight of the modular symbols space to which this symbol belongs; i.e. for a symbol of the form XiYk2i{α,β}, return k.

EXAMPLES:

sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1]
sage: s.weight()
28