Manin symbol lists¶
There are various different classes holding lists of Manin symbols of different types. The hierarchy is as follows:
- class sage.modular.modsym.manin_symbol_list.ManinSymbolList(weight, lst)¶
Bases:
sage.structure.parent.ParentBase class for lists of all Manin symbols for a given weight, group or character.
- Element¶
- apply(j, X)¶
Apply the matrix \(X = [a, b; c, d]\) to the \(j\)-th Manin symbol.
Implemented in derived classes.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.apply(10, [1,2,0,1]) Traceback (most recent call last): ... NotImplementedError: Only implemented in derived classes
- apply_I(j)¶
Apply the matrix \(I = [-1, 0; 0, 1]\) to the \(j\)-th Manin symbol.
Implemented in derived classes.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.apply_I(10) Traceback (most recent call last): ... NotImplementedError: Only implemented in derived classes
- apply_S(j)¶
Apply the matrix \(S = [0, -1; 1, 0]\) to the \(j\)-th Manin symbol.
Implemented in derived classes.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.apply_S(10) Traceback (most recent call last): ... NotImplementedError: Only implemented in derived classes
- apply_T(j)¶
Apply the matrix \(T = [0, 1; -1, -1]\) to the \(j\)-th Manin symbol.
Implemented in derived classes.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.apply_T(10) Traceback (most recent call last): ... NotImplementedError: Only implemented in derived classes
- apply_TT(j)¶
Apply the matrix \(TT = T^2 = [-1, -1; 0, 1]\) to the \(j\)-th Manin symbol.
Implemented in derived classes.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.apply_TT(10) Traceback (most recent call last): ... NotImplementedError: Only implemented in derived classes
- index(x)¶
Return the index of
xin the list of Manin symbols.INPUT:
x– a triple of integers \((i, u, v)\) defining a valid Manin symbol, which need not be normalized
OUTPUT:
integer – the index of the normalized Manin symbol equivalent to \((i, u, v)\). If
xis not inself, -1 is returned.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.index(m.symbol_list()[2]) 2 sage: S = m.symbol_list() sage: all(i == m.index(S[i]) for i in range(len(S))) True
- list()¶
Return all the Manin symbols in
selfas a list.Cached for subsequent calls.
OUTPUT:
A list of
ManinSymbolobjects, which is a copy of the complete list of Manin symbols.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.manin_symbol_list() # not implemented for the base class
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(6, 4) sage: m.manin_symbol_list() [[Y^2,(0,1)], [Y^2,(1,0)], [Y^2,(1,1)], ... [X^2,(3,1)], [X^2,(3,2)]]
- manin_symbol(i)¶
Return the
i-th Manin symbol in thisManinSymbolList.INPUT:
i– integer, a valid index of a symbol in this list
OUTPUT:
ManinSymbol– the \(i\)’th Manin symbol in the list.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.manin_symbol(3) # not implemented for base class
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(6, 4) sage: s = m.manin_symbol(3); s [Y^2,(1,2)] sage: type(s) <class 'sage.modular.modsym.manin_symbol.ManinSymbol'>
- manin_symbol_list()¶
Return all the Manin symbols in
selfas a list.Cached for subsequent calls.
OUTPUT:
A list of
ManinSymbolobjects, which is a copy of the complete list of Manin symbols.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.manin_symbol_list() # not implemented for the base class
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(6, 4) sage: m.manin_symbol_list() [[Y^2,(0,1)], [Y^2,(1,0)], [Y^2,(1,1)], ... [X^2,(3,1)], [X^2,(3,2)]]
- normalize(x)¶
Return a normalized Manin symbol from
x.To be implemented in derived classes.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6,P1List(11)) sage: m.normalize((0,6,7)) # not implemented in base class
- symbol_list()¶
Return the list of symbols of
self.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList sage: m = ManinSymbolList(6, P1List(11))
- weight()¶
Return the weight of the Manin symbols in this
ManinSymbolList.OUTPUT:
integer – the weight of the Manin symbols in the list.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(6, 4) sage: m.weight() 4
- class sage.modular.modsym.manin_symbol_list.ManinSymbolList_character(character, weight)¶
Bases:
sage.modular.modsym.manin_symbol_list.ManinSymbolListList of Manin symbols with character.
INPUT:
character– (DirichletCharacter) the Dirichlet characterweight– (integer) the weight
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,2); m Manin Symbol List of weight 2 for Gamma1(4) with character [-1] sage: m.manin_symbol_list() [(0,1), (1,0), (1,1), (1,2), (1,3), (2,1)] sage: m == loads(dumps(m)) True
- apply(j, m)¶
Apply the integer matrix \(m=[a,b;c,d]\) to the \(j\)-th Manin symbol.
INPUT:
j(integer): the index of the symbol to act on.m(list of ints): \([a,b,c,d]\) where \(m = [a, b; c, d]\) is the matrix to be applied.
OUTPUT:
A list of pairs \((j, c_i)\), where each \(c_i\) is an integer, \(j\) is an integer (the \(j\)-th Manin symbol), and the sum \(c_i*x_i\) is the image of self under the right action of the matrix \([a,b;c,d]\). Here the right action of \(g = [a,b;c,d]\) on a Manin symbol \([P(X,Y),(u,v)]\) is by definition \([P(aX+bY,cX+dY),(u,v)*g]\).
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,4) sage: m[6] [X*Y,(0,1)] sage: m.apply(4, [1,0,0,1]) [(4, 1)] sage: m.apply(1, [-1,0,0,1]) [(1, -1)]
- apply_I(j)¶
Apply the matrix \(I=[-1,0,0,1]\) to the \(j\)-th Manin symbol.
INPUT:
j- (integer) a symbol index
OUTPUT:
(k, s)where \(k\) is the index of the symbol obtained by acting on the \(j\)’th symbol with \(I\), and \(s\) is the parity of the \(j\)’th symbol.EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,2); m Manin Symbol List of weight 2 for Gamma1(4) with character [-1] sage: m.apply_I(4) (2, -1) sage: [m.apply_I(i) for i in range(len(m))] [(0, 1), (1, -1), (4, -1), (3, -1), (2, -1), (5, 1)]
- apply_S(j)¶
Apply the matrix \(S=[0,1;-1,0]\) to the \(j\)-th Manin symbol.
INPUT:
j- (integer) a symbol index.
OUTPUT:
(k, s)where \(k\) is the index of the symbol obtained by acting on the \(j\)’th symbol with \(S\), and \(s\) is the parity of the \(j\)’th symbol.EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,2); m Manin Symbol List of weight 2 for Gamma1(4) with character [-1] sage: m.apply_S(4) (2, -1) sage: [m.apply_S(i) for i in range(len(m))] [(1, 1), (0, -1), (4, 1), (5, -1), (2, -1), (3, 1)]
- apply_T(j)¶
Apply the matrix \(T=[0,1,-1,-1]\) to the j-th Manin symbol.
INPUT:
j- (integer) a symbol index.
OUTPUT:
A list of pairs \((j, c_i)\), where each \(c_i\) is an integer, \(j\) is an integer (the \(j\)-th Manin symbol), and the sum \(c_i*x_i\) is the image of self under the right action of the matrix \(T\).
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,2); m Manin Symbol List of weight 2 for Gamma1(4) with character [-1] sage: m.apply_T(4) [(1, -1)] sage: [m.apply_T(i) for i in range(len(m))] [[(4, 1)], [(0, -1)], [(3, 1)], [(5, 1)], [(1, -1)], [(2, 1)]]
- apply_TT(j)¶
Apply the matrix \(TT=[-1,-1,0,1]\) to the \(j\)-th Manin symbol.
INPUT:
j- (integer) a symbol index
OUTPUT:
A list of pairs \((j, c_i)\), where each \(c_i\) is an integer, \(j\) is an integer (the \(j\)-th Manin symbol), and the sum \(c_i*x_i\) is the image of self under the right action of the matrix \(T^2\).
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,2); m Manin Symbol List of weight 2 for Gamma1(4) with character [-1] sage: m.apply_TT(4) [(0, 1)] sage: [m.apply_TT(i) for i in range(len(m))] [[(1, -1)], [(4, -1)], [(5, 1)], [(2, 1)], [(0, 1)], [(3, 1)]]
- character()¶
Return the character of this
ManinSymbolList_characterobject.OUTPUT:
The Dirichlet character of this Manin symbol list.
EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,2); m Manin Symbol List of weight 2 for Gamma1(4) with character [-1] sage: m.character() Dirichlet character modulo 4 of conductor 4 mapping 3 |--> -1
- index(x)¶
Return the index of a standard Manin symbol equivalent to
x, together with a scaling factor.INPUT:
x– 3-tuple of integers defining an element of this list of Manin symbols, which need not be normalized
OUTPUT:
A pair
(i, s)whereiis the index of the Manin symbol equivalent toxandsis the scalar (an element of the base field). If there is no Manin symbol equivalent toxin the list, then(-1, 0)is returned.EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,4); m Manin Symbol List of weight 4 for Gamma1(4) with character [-1] sage: [m.index(s.tuple()) for s in m.manin_symbol_list()] [(0, 1), (1, 1), (2, 1), (3, 1), ... (16, 1), (17, 1)]
- level()¶
Return the level of this
ManinSymbolList.OUTPUT:
integer- the level of the symbols in this list.EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: ManinSymbolList_character(eps,4).level() 4
- normalize(x)¶
Return the normalization of the Manin Symbol
xwith respect to this list, together with the normalizing scalar.INPUT:
x- 3-tuple of integers(i,u,v), defining an element of this list of Manin symbols, which need not be normalized.
OUTPUT:
((i,u,v),s), where(i,u,v)is the normalized Manin symbol equivalent tox, andsis the normalizing scalar.EXAMPLES:
sage: eps = DirichletGroup(4).gen(0) sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_character sage: m = ManinSymbolList_character(eps,4); m Manin Symbol List of weight 4 for Gamma1(4) with character [-1] sage: [m.normalize(s.tuple()) for s in m.manin_symbol_list()] [((0, 0, 1), 1), ((0, 1, 0), 1), ((0, 1, 1), 1), ... ((2, 1, 3), 1), ((2, 2, 1), 1)]
- class sage.modular.modsym.manin_symbol_list.ManinSymbolList_gamma0(level, weight)¶
Bases:
sage.modular.modsym.manin_symbol_list.ManinSymbolList_groupClass for Manin symbols for \(\Gamma_0(N)\).
INPUT:
level- (integer): the level.weight- (integer): the weight.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,2); m Manin Symbol List of weight 2 for Gamma0(5) sage: m.manin_symbol_list() [(0,1), (1,0), (1,1), (1,2), (1,3), (1,4)] sage: m = ManinSymbolList_gamma0(6,4); m Manin Symbol List of weight 4 for Gamma0(6) sage: len(m) 36
- class sage.modular.modsym.manin_symbol_list.ManinSymbolList_gamma1(level, weight)¶
Bases:
sage.modular.modsym.manin_symbol_list.ManinSymbolList_groupClass for Manin symbols for \(\Gamma_1(N)\).
INPUT:
level- (integer): the level.weight- (integer): the weight.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma1 sage: m = ManinSymbolList_gamma1(5,2); m Manin Symbol List of weight 2 for Gamma1(5) sage: m.manin_symbol_list() [(0,1), (0,2), (0,3), ... (4,3), (4,4)] sage: m = ManinSymbolList_gamma1(6,4); m Manin Symbol List of weight 4 for Gamma1(6) sage: len(m) 72 sage: m == loads(dumps(m)) True
- class sage.modular.modsym.manin_symbol_list.ManinSymbolList_gamma_h(group, weight)¶
Bases:
sage.modular.modsym.manin_symbol_list.ManinSymbolList_groupClass for Manin symbols for \(\Gamma_H(N)\).
INPUT:
group- (integer): the congruence subgroup.weight- (integer): the weight.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma_h sage: G = GammaH(117, [4]) sage: m = ManinSymbolList_gamma_h(G,2); m Manin Symbol List of weight 2 for Congruence Subgroup Gamma_H(117) with H generated by [4] sage: m.manin_symbol_list()[100:110] [(1,88), (1,89), (1,90), (1,91), (1,92), (1,93), (1,94), (1,95), (1,96), (1,97)] sage: len(m.manin_symbol_list()) 2016 sage: m == loads(dumps(m)) True
- group()¶
Return the group associated to self.
EXAMPLES:
sage: ModularSymbols(GammaH(12, [5]), 2).manin_symbols().group() Congruence Subgroup Gamma_H(12) with H generated by [5]
- class sage.modular.modsym.manin_symbol_list.ManinSymbolList_group(level, weight, syms)¶
Bases:
sage.modular.modsym.manin_symbol_list.ManinSymbolListBase class for Manin symbol lists for a given group.
INPUT:
level– integer levelweight– integer weightsyms– something withnormalizeandlistmethods,e.g.
P1List.
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_group sage: ManinSymbolList_group(11, 2, P1List(11)) <sage.modular.modsym.manin_symbol_list.ManinSymbolList_group_with_category object at ...>
- apply(j, m)¶
Apply the matrix \(m = [a, b; c, d]\) to the \(j\)-th Manin symbol.
INPUT:
j- (int) a symbol indexm = [a, b, c, d]a list of 4 integers, which defines a 2x2 matrix
OUTPUT:
a list of pairs \((j_i, \alpha_i)\), where each \(\alpha_i\) is a nonzero integer, \(j_i\) is an integer (index of the \(j_i\)-th Manin symbol), and \(\sum_i \alpha_i\*x_{j_i}\) is the image of the j-th Manin symbol under the right action of the matrix [a,b;c,d]. Here the right action of \(g = [a, b; c, d]\) on a Manin symbol \([P(X,Y),(u,v)]\) is \([P(aX+bY,cX+dY),(u,v)\*g]\).
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: m.apply(40, [2,3,1,1]) [(0, 729), (6, 2916), (12, 4860), (18, 4320), (24, 2160), (30, 576), (36, 64)]
- apply_I(j)¶
Apply the matrix \(I=[-1,0,0,1]\) to the \(j\)-th Manin symbol.
INPUT:
j- (int) a symbol index
OUTPUT:
(k, s)where k is the index of the symbol obtained by acting on the \(j\)’th symbol with \(I\), and \(s\) is the parity of the \(j\)’th symbol (a Pythonint, either 1 or -1)EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: m.apply_I(4) (3, 1) sage: [m.apply_I(i) for i in range(10)] [(0, 1), (1, 1), (5, 1), (4, 1), (3, 1), (2, 1), (6, -1), (7, -1), (11, -1), (10, -1)]
- apply_S(j)¶
Apply the matrix \(S = [0, -1; 1, 0]\) to the \(j\)-th Manin symbol.
INPUT:
j– (int) a symbol index
OUTPUT:
(k, s)where k is the index of the symbol obtained by acting on the \(j\)’th symbol with \(S\), and \(s\) is the parity of the \(j\)’th symbol (a Pythonint, either 1 or -1).EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: m.apply_S(4) (40, 1) sage: [m.apply_S(i) for i in range(len(m))] [(37, 1), (36, 1), (41, 1), (39, 1), (40, 1), (38, 1), (31, -1), (30, -1), (35, -1), (33, -1), (34, -1), (32, -1), ... (4, 1), (2, 1)]
- apply_T(j)¶
Apply the matrix \(T=[0,1,-1,-1]\) to the \(j\)-th Manin symbol.
INPUT:
j- (int) a symbol index
OUTPUT: see documentation for apply()
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: m.apply_T(4) [(3, 1), (9, -6), (15, 15), (21, -20), (27, 15), (33, -6), (39, 1)] sage: [m.apply_T(i) for i in range(10)] [[(5, 1), (11, -6), (17, 15), (23, -20), (29, 15), (35, -6), (41, 1)], [(0, 1), (6, -6), (12, 15), (18, -20), (24, 15), (30, -6), (36, 1)], [(4, 1), (10, -6), (16, 15), (22, -20), (28, 15), (34, -6), (40, 1)], [(2, 1), (8, -6), (14, 15), (20, -20), (26, 15), (32, -6), (38, 1)], [(3, 1), (9, -6), (15, 15), (21, -20), (27, 15), (33, -6), (39, 1)], [(1, 1), (7, -6), (13, 15), (19, -20), (25, 15), (31, -6), (37, 1)], [(5, 1), (11, -5), (17, 10), (23, -10), (29, 5), (35, -1)], [(0, 1), (6, -5), (12, 10), (18, -10), (24, 5), (30, -1)], [(4, 1), (10, -5), (16, 10), (22, -10), (28, 5), (34, -1)], [(2, 1), (8, -5), (14, 10), (20, -10), (26, 5), (32, -1)]]
- apply_TT(j)¶
Apply the matrix \(TT=[-1,-1,0,1]\) to the \(j\)-th Manin symbol.
INPUT:
j- (int) a symbol index
OUTPUT: see documentation for apply()
EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: m.apply_TT(4) [(38, 1)] sage: [m.apply_TT(i) for i in range(10)] [[(37, 1)], [(41, 1)], [(39, 1)], [(40, 1)], [(38, 1)], [(36, 1)], [(31, -1), (37, 1)], [(35, -1), (41, 1)], [(33, -1), (39, 1)], [(34, -1), (40, 1)]]
- level()¶
Return the level of this
ManinSymbolList.EXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: ManinSymbolList_gamma0(5,2).level() 5
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma1 sage: ManinSymbolList_gamma1(51,2).level() 51
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma_h sage: ManinSymbolList_gamma_h(GammaH(117, [4]),2).level() 117
- normalize(x)¶
Return the normalization of the Manin symbol
xwith respect to this list.INPUT:
x– (3-tuple of ints) a tuple defining a ManinSymbol
OUTPUT:
(i,u,v)– (3-tuple of ints) another tuple defining the associated normalized ManinSymbolEXAMPLES:
sage: from sage.modular.modsym.manin_symbol_list import ManinSymbolList_gamma0 sage: m = ManinSymbolList_gamma0(5,8) sage: [m.normalize(s.tuple()) for s in m.manin_symbol_list()][:10] [(0, 0, 1), (0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4), (1, 0, 1), (1, 1, 0), (1, 1, 1), (1, 1, 2)]