To an elliptic curves \(E\) over the rational numbers one can associate a space - or better two spaces - of modular symbols of level \(N\), equal to the conductor of \(E\); because \(E\) is known to be modular.
There are two implementations of modular symbols, one within sage and the other as part of Cremona’s eclib. One can choose here which one is used.
The normalisation of our modular symbols attached to \(E\) can be chosen, too. For instance one can make it depended on \(E\) rather than on its isogeny class. This is useful for \(p\)-adic L-functions.
For more details on modular symbols consult the following
REFERENCES:
AUTHORS:
Bases: sage.structure.sage_object.SageObject
A modular symbol attached to an elliptic curve, which is the map \(\QQ\to \QQ\) obtained by sending \(r\) to the normalized symmetrized (or anti-symmetrized) integral from \(r\) to \(\infty\).
This is as defined in [MTT], but normalized to depend on the curve and not only its isogeny class as in [SW].
See the documentation of E.modular_symbol() in Elliptic curves over the rational numbers for help.
REFERENCES:
Return the base ring for this modular symbol.
EXAMPLES:
sage: m = EllipticCurve('11a1').modular_symbol()
sage: m.base_ring()
Rational Field
Return the elliptic curve of this modular symbol.
EXAMPLES:
sage: m = EllipticCurve('11a1').modular_symbol()
sage: m.elliptic_curve()
Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
Return the sign of this elliptic curve modular symbol.
EXAMPLES:
sage: m = EllipticCurve('11a1').modular_symbol()
sage: m.sign()
1
sage: m = EllipticCurve('11a1').modular_symbol(sign=-1)
sage: m.sign()
-1
Bases: sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbol
Modular symbols attached to \(E\) using eclib.
INPUT:
EXAMPLES:
sage: import sage.schemes.elliptic_curves.ell_modular_symbols
sage: E=EllipticCurve('11a1')
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolECLIB(E,+1)
sage: M
Modular symbol with sign 1 over Rational Field attached to Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
sage: M(0)
1/5
sage: E=EllipticCurve('11a2')
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolECLIB(E,+1)
sage: M(0)
1
This is a rank 1 case with vanishing positive twists. The modular symbol can not be adjusted:
sage: E=EllipticCurve('121b1')
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolECLIB(E,+1)
Warning : Could not normalize the modular symbols, maybe all further results will be multiplied by -1, 2 or -2.
sage: M(0)
0
sage: M(1/7)
-2
sage: M = EllipticCurve('121d1').modular_symbol(use_eclib=True)
sage: M(0)
2
sage: M = EllipticCurve('121d1').modular_symbol(use_eclib=True,normalize='none')
sage: M(0)
8
sage: E = EllipticCurve('15a1')
sage: [C.modular_symbol(use_eclib=True,normalize='L_ratio')(0) for C in E.isogeny_class()]
[1/4, 1/8, 1/4, 1/2, 1/8, 1/16, 1/2, 1]
sage: [C.modular_symbol(use_eclib=True,normalize='none')(0) for C in E.isogeny_class()]
[1/4, 1/4, 1/4, 1/4, 1/4, 1/4, 1/4, 1/4]
Currently, the interface for negative modular symbols in eclib is not yet written:
sage: E.modular_symbol(use_eclib=True,sign=-1)
Traceback (most recent call last):
...
NotImplementedError: Despite that eclib has now -1 modular symbols the interface to them is not yet written.
TESTS (for trac 10236):
sage: E = EllipticCurve('11a1')
sage: m = E.modular_symbol(use_eclib=True)
sage: m(1/7)
7/10
sage: m(0)
1/5
Bases: sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbol
Modular symbols attached to \(E\) using sage.
INPUT:
EXAMPLES:
sage: E=EllipticCurve('11a1')
sage: import sage.schemes.elliptic_curves.ell_modular_symbols
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolSage(E,+1)
sage: M
Modular symbol with sign 1 over Rational Field attached to Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
sage: M(0)
1/5
sage: E=EllipticCurve('11a2')
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolSage(E,+1)
sage: M(0)
1
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolSage(E,-1)
sage: M(1/3)
1
This is a rank 1 case with vanishing positive twists. The modular symbol is adjusted by -2:
sage: E=EllipticCurve('121b1')
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.ModularSymbolSage(E,-1,normalize='L_ratio')
sage: M(1/3)
2
sage: M._scaling
-2
sage: M = EllipticCurve('121d1').modular_symbol(use_eclib=False)
sage: M(0)
2
sage: M = EllipticCurve('121d1').modular_symbol(use_eclib=False,normalize='none')
sage: M(0)
1
sage: E = EllipticCurve('15a1')
sage: [C.modular_symbol(use_eclib=False, normalize='L_ratio')(0) for C in E.isogeny_class()]
[1/4, 1/8, 1/4, 1/2, 1/8, 1/16, 1/2, 1]
sage: [C.modular_symbol(use_eclib=False, normalize='period')(0) for C in E.isogeny_class()]
[1/8, 1/16, 1/8, 1/4, 1/16, 1/32, 1/4, 1/2]
sage: [C.modular_symbol(use_eclib=False, normalize='none')(0) for C in E.isogeny_class()]
[1, 1, 1, 1, 1, 1, 1, 1]
Creates the space of modular symbols of a given sign over a give base_ring, attached to the isogeny class of elliptic curves.
INPUT:
- E - an elliptic curve over \(\QQ\)
- sign - integer, -1, 0, or 1
- base_ring - ring
- bound - (default: None) maximum number of Hecke operators to use to cut out modular symbols factor. If None, use enough to provably get the correct answer.
OUTPUT: a space of modular symbols
EXAMPLES:
sage: import sage.schemes.elliptic_curves.ell_modular_symbols
sage: E=EllipticCurve('11a1')
sage: M=sage.schemes.elliptic_curves.ell_modular_symbols.modular_symbol_space(E,-1,GF(37))
sage: M
Modular Symbols space of dimension 1 for Gamma_0(11) of weight 2 with sign -1 over Finite Field of size 37