# 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

A Manin symbol $$[X^i Y^{k-2-i}, (u, v)]$$.

INPUT:

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)
True

sage: m = ManinSymbolList_gamma0(5,8)
sage: s = ManinSymbol(m,(2,2,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)

apply(a, b, c, d)

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

endpoints(N=None)

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)

i
level()

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

lift_to_sl2z(N=None)

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]

modular_symbol_rep()

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}

tuple()

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)

u
v
weight()

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

sage.modular.modsym.manin_symbol.is_ManinSymbol(x)

Return True if x is 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())
sage: s
[Y^2,(1,2)]
sage: is_ManinSymbol(s)
True
sage: is_ManinSymbol(m)
True