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.Parent
Base 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
x
in 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
x
is 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
self
as a list.Cached for subsequent calls.
OUTPUT:
A list of
ManinSymbol
objects, 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) <type 'sage.modular.modsym.manin_symbol.ManinSymbol'>
- manin_symbol_list()¶
Return all the Manin symbols in
self
as a list.Cached for subsequent calls.
OUTPUT:
A list of
ManinSymbol
objects, 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.ManinSymbolList
List 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_character
object.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)
wherei
is the index of the Manin symbol equivalent tox
ands
is the scalar (an element of the base field). If there is no Manin symbol equivalent tox
in 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
x
with 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
, ands
is 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_group
Class 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_group
Class 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_group
Class 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.ManinSymbolList
Base class for Manin symbol lists for a given group.
INPUT:
level
– integer levelweight
– integer weightsyms
– something withnormalize
andlist
methods,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
x
with 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)]