Modular Symbols¶
Modular symbols are a beautiful piece of mathematics that was
developed since the 1960s by Birch, Manin, Shokorov, Mazur, Merel,
Cremona, and others. Not only are modular symbols a powerful
computational tool as we will see, they have also been used to
prove rationality results for special values of
We view modular symbols as a remarkably flexible computational tool
that provides a single uniform algorithm for computing
Definition¶
A modular symbol of weight
and for every
The modular symbols space
The amazing theorem that makes modular symbols useful is that there
is an explicit description of an action of a Hecke algebra
This means that if modular symbols are
computable (they are!), then they can be used to compute a lot
about the
Manin Symbols¶
Definition¶
Though
where
Computing in Sage¶
We compute a basis for the space
of weight
sage: M = ModularSymbols(11,4)
sage: M.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)])
sage: M( (2,0,1) )
[X^2,(0,1)]
sage: M( (1,1,3) )
2/7*[X^2,(1,6)] + 1/14*[X^2,(1,7)] - 4/7*[X^2,(1,8)]
+ 3/14*[X^2,(1,10)]
>>> from sage.all import *
>>> M = ModularSymbols(Integer(11),Integer(4))
>>> M.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)])
>>> M( (Integer(2),Integer(0),Integer(1)) )
[X^2,(0,1)]
>>> M( (Integer(1),Integer(1),Integer(3)) )
2/7*[X^2,(1,6)] + 1/14*[X^2,(1,7)] - 4/7*[X^2,(1,8)]
+ 3/14*[X^2,(1,10)]
M = ModularSymbols(11,4) M.basis() M( (2,0,1) ) M( (1,1,3) )
We compute a modular symbols representation for the Manin symbol
sage: a = M.1; a
[X^2,(1,6)]
sage: a.modular_symbol_rep()
36*X^2*{-1/6, 0} + 12*X*Y*{-1/6, 0} + Y^2*{-1/6, 0}
sage: 36*M([2,-1/6,0]) + 12*M([1,-1/6,0]) + M([0,-1/6,0])
[X^2,(1,6)]
>>> from sage.all import *
>>> a = M.gen(1); a
[X^2,(1,6)]
>>> a.modular_symbol_rep()
36*X^2*{-1/6, 0} + 12*X*Y*{-1/6, 0} + Y^2*{-1/6, 0}
>>> Integer(36)*M([Integer(2),-Integer(1)/Integer(6),Integer(0)]) + Integer(12)*M([Integer(1),-Integer(1)/Integer(6),Integer(0)]) + M([Integer(0),-Integer(1)/Integer(6),Integer(0)])
[X^2,(1,6)]
a = M.1; a a.modular_symbol_rep() 36*M([2,-1/6,0]) + 12*M([1,-1/6,0]) + M([0,-1/6,0])