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 - selfunder 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 - selfas 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 - Trueif- xis a- ManinSymbol.- 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