Manin symbols#
This module defines the class ManinSymbol. A Manin symbol of
weight \(k\), level \(N\) has the form \([P(X,Y),(u:v)]\) where
\(P(X,Y)\in\ZZ[X,Y]\) is homogeneous of weight \(k-2\) and
\((u:v)\in\mathbb{P}^1(\ZZ/N\ZZ).\) The ManinSymbol class
holds a “monomial Manin symbol” of the simpler form
\([X^iY^{k-2-i},(u:v)]\), which is stored as a triple \((i,u,v)\); the
weight and level are obtained from the parent structure, which is a
sage.modular.modsym.manin_symbol_list.ManinSymbolList
.
Integer matrices \([a,b;c,d]\) act on Manin symbols on the right, sending \([P(X,Y),(u,v)]\) to \([P(aX+bY,cX+dY),(u,v)g]\). Diagonal matrices (with \(b=c=0\), such as \(I=[-1,0;0,1]\) and \(J=[-1,0;0,-1]\)) and anti-diagonal matrices (with \(a=d=0\), such as \(S=[0,-1;1,0]\)) map monomial Manin symbols to monomial Manin symbols, up to a scalar factor. For general matrices (such as \(T=[0,1,-1,-1]\) and \(T^2=[-1,-1;0,1]\)) the image of a monomial Manin symbol is expressed as a formal sum of monomial Manin symbols, with integer coefficients.
- class sage.modular.modsym.manin_symbol.ManinSymbol[source]#
Bases:
Element
A Manin symbol \([X^i Y^{k-2-i}, (u, v)]\).
INPUT:
parent
–ManinSymbolList
t
– a triple \((i, u, v)\) of integers
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,2) sage: s = ManinSymbol(m,(2,2,3)); s (2,3) sage: s == loads(dumps(s)) True
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(2)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))); s (2,3) >>> s == loads(dumps(s)) True
sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)); s [X^2*Y^4,(2,3)]
>>> from sage.all import * >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))); s [X^2*Y^4,(2,3)]
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)) sage: s.parent() Manin Symbol List of weight 8 for Gamma0(5)
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))) >>> s.parent() Manin Symbol List of weight 8 for Gamma0(5)
- apply(a, b, c, d)[source]#
Return the image of self under the matrix \([a,b;c,d]\).
Not implemented for raw ManinSymbol objects, only for members of ManinSymbolLists.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,2) sage: m.apply(10,[1,0,0,1]) # not implemented for base class
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(2)) >>> m.apply(Integer(10),[Integer(1),Integer(0),Integer(0),Integer(1)]) # not implemented for base class
- endpoints(N=None)[source]#
Return cusps \(alpha\), \(beta\) such that this Manin symbol, viewed as a symbol for level \(N\), is \(X^i*Y^{k-2-i} \{alpha, beta\}\).
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)); s [X^2*Y^4,(2,3)] sage: s.endpoints() (1/3, 1/2)
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))); s [X^2*Y^4,(2,3)] >>> s.endpoints() (1/3, 1/2)
- level()[source]#
Return the level of this Manin symbol.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)) sage: s.level() 5
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))) >>> s.level() 5
- lift_to_sl2z(N=None)[source]#
Return a lift of this Manin symbol to \(SL_2(\ZZ)\).
If this Manin symbol is \((c,d)\) and \(N\) is its level, this function returns a list \([a,b, c',d']\) that defines a 2x2 matrix with determinant 1 and integer entries, such that \(c=c'\) (mod \(N\)) and \(d=d'\) (mod \(N\)).
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)) sage: s [X^2*Y^4,(2,3)] sage: s.lift_to_sl2z() [1, 1, 2, 3]
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))) >>> s [X^2*Y^4,(2,3)] >>> s.lift_to_sl2z() [1, 1, 2, 3]
- modular_symbol_rep()[source]#
Return a representation of
self
as a formal sum of modular symbols.The result is not cached.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)) sage: s.modular_symbol_rep() 144*X^6*{1/3, 1/2} - 384*X^5*Y*{1/3, 1/2} + 424*X^4*Y^2*{1/3, 1/2} - 248*X^3*Y^3*{1/3, 1/2} + 81*X^2*Y^4*{1/3, 1/2} - 14*X*Y^5*{1/3, 1/2} + Y^6*{1/3, 1/2}
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))) >>> s.modular_symbol_rep() 144*X^6*{1/3, 1/2} - 384*X^5*Y*{1/3, 1/2} + 424*X^4*Y^2*{1/3, 1/2} - 248*X^3*Y^3*{1/3, 1/2} + 81*X^2*Y^4*{1/3, 1/2} - 14*X*Y^5*{1/3, 1/2} + Y^6*{1/3, 1/2}
- tuple()[source]#
Return the 3-tuple \((i,u,v)\) of this Manin symbol.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)) sage: s.tuple() (2, 2, 3)
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))) >>> s.tuple() (2, 2, 3)
- weight()[source]#
Return the weight of this Manin symbol.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: s = ManinSymbol(m,(2,2,3)) sage: s.weight() 8
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(5),Integer(8)) >>> s = ManinSymbol(m,(Integer(2),Integer(2),Integer(3))) >>> s.weight() 8
- sage.modular.modsym.manin_symbol.is_ManinSymbol(x)[source]#
Return
True
ifx
is aManinSymbol
.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol import ManinSymbol, is_ManinSymbol sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(6, 4) sage: s = ManinSymbol(m, m.symbol_list()[3]) sage: s [Y^2,(1,2)] sage: is_ManinSymbol(s) doctest:warning... DeprecationWarning: The function is_ManinSymbol is deprecated; use 'isinstance(..., ManinSymbol)' instead. See https://github.com/sagemath/sage/issues/38184 for details. True sage: is_ManinSymbol(m[3]) True
>>> from sage.all import * >>> from sage.modular.modsym.manin_symbol import ManinSymbol, is_ManinSymbol >>> from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 >>> m = ManinSymbolList_gamma0(Integer(6), Integer(4)) >>> s = ManinSymbol(m, m.symbol_list()[Integer(3)]) >>> s [Y^2,(1,2)] >>> is_ManinSymbol(s) doctest:warning... DeprecationWarning: The function is_ManinSymbol is deprecated; use 'isinstance(..., ManinSymbol)' instead. See https://github.com/sagemath/sage/issues/38184 for details. True >>> is_ManinSymbol(m[Integer(3)]) True