Heilbronn matrix computation¶
- class sage.modular.modsym.heilbronn.Heilbronn¶
- Bases: - object- apply(u, v, N)[source]¶
- Return a list of pairs \(((c,d),m)\), which is obtained as follows: - 1) Compute the images \((a,b)\) of the vector \((u,v) \pmod N\) acted on by each of the HeilbronnCremona matrices in - self.- Reduce each \((a,b)\) to canonical form \((c,d)\) using - p1normalize.
- Sort. 
 - 4) Create the list \(((c,d),m)\), where \(m\) is the number of times that \((c,d)\) appears in the list created in steps 1-3 above. Note that the pairs \(((c,d),m)\) are sorted lexicographically by \((c,d)\). - INPUT: - u,- v,- N– integers
 - OUTPUT: list - EXAMPLES: - sage: H = sage.modular.modsym.heilbronn.HeilbronnCremona(2); H The Cremona-Heilbronn matrices of determinant 2 sage: H.apply(1,2,7) [((1, 1), 1), ((1, 4), 1), ((1, 5), 1), ((1, 6), 1)] - >>> from sage.all import * >>> H = sage.modular.modsym.heilbronn.HeilbronnCremona(Integer(2)); H The Cremona-Heilbronn matrices of determinant 2 >>> H.apply(Integer(1),Integer(2),Integer(7)) [((1, 1), 1), ((1, 4), 1), ((1, 5), 1), ((1, 6), 1)] 
 - to_list()[source]¶
- Return the list of Heilbronn matrices corresponding to - self.- Each matrix is given as a list of four integers. - EXAMPLES: - sage: H = HeilbronnCremona(2); H The Cremona-Heilbronn matrices of determinant 2 sage: H.to_list() [[1, 0, 0, 2], [2, 0, 0, 1], [2, 1, 0, 1], [1, 0, 1, 2]] - >>> from sage.all import * >>> H = HeilbronnCremona(Integer(2)); H The Cremona-Heilbronn matrices of determinant 2 >>> H.to_list() [[1, 0, 0, 2], [2, 0, 0, 1], [2, 1, 0, 1], [1, 0, 1, 2]] 
 
- class sage.modular.modsym.heilbronn.HeilbronnCremona[source]¶
- Bases: - Heilbronn- Create the list of Heilbronn-Cremona matrices of determinant \(p\). - EXAMPLES: - sage: H = HeilbronnCremona(3) ; H The Cremona-Heilbronn matrices of determinant 3 sage: H.to_list() [[1, 0, 0, 3], [3, 1, 0, 1], [1, 0, 1, 3], [3, 0, 0, 1], [3, -1, 0, 1], [-1, 0, 1, -3]] - >>> from sage.all import * >>> H = HeilbronnCremona(Integer(3)) ; H The Cremona-Heilbronn matrices of determinant 3 >>> H.to_list() [[1, 0, 0, 3], [3, 1, 0, 1], [1, 0, 1, 3], [3, 0, 0, 1], [3, -1, 0, 1], [-1, 0, 1, -3]] 
- class sage.modular.modsym.heilbronn.HeilbronnMerel[source]¶
- Bases: - Heilbronn- Initialize the list of Merel-Heilbronn matrices of determinant \(n\). - EXAMPLES: - sage: H = HeilbronnMerel(3) ; H The Merel-Heilbronn matrices of determinant 3 sage: H.to_list() [[1, 0, 0, 3], [1, 0, 1, 3], [1, 0, 2, 3], [2, 1, 1, 2], [3, 0, 0, 1], [3, 1, 0, 1], [3, 2, 0, 1]] - >>> from sage.all import * >>> H = HeilbronnMerel(Integer(3)) ; H The Merel-Heilbronn matrices of determinant 3 >>> H.to_list() [[1, 0, 0, 3], [1, 0, 1, 3], [1, 0, 2, 3], [2, 1, 1, 2], [3, 0, 0, 1], [3, 1, 0, 1], [3, 2, 0, 1]] 
- sage.modular.modsym.heilbronn.hecke_images_gamma0_weight2(u, v, N, indices, R)[source]¶
- INPUT: - u,- v,- N– integers so that \(\gcd(u,v,N) = 1\)
- indices– list of positive integers
- R– matrix over \(\QQ\) that writes each elements of \(\textnormal{P1} = \textnormal{P1List}(N)\) in terms of a subset of \(\textnormal{P1}\)
 - OUTPUT: a dense matrix whose columns are the images \(T_n(x)\) for \(n\) in indices and \(x\) the Manin symbol \((u,v)\), expressed in terms of the basis. - EXAMPLES: - sage: M = ModularSymbols(23,2,1) sage: A = sage.modular.modsym.heilbronn.hecke_images_gamma0_weight2(1,0,23,[1..6],M.manin_gens_to_basis()) sage: rowsA = A.rows() sage: z = M((1,0)) sage: all(M.T(n)(z).element() == rowsA[n-1] for n in [1..6]) True - >>> from sage.all import * >>> M = ModularSymbols(Integer(23),Integer(2),Integer(1)) >>> A = sage.modular.modsym.heilbronn.hecke_images_gamma0_weight2(Integer(1),Integer(0),Integer(23),(ellipsis_range(Integer(1),Ellipsis,Integer(6))),M.manin_gens_to_basis()) >>> rowsA = A.rows() >>> z = M((Integer(1),Integer(0))) >>> all(M.T(n)(z).element() == rowsA[n-Integer(1)] for n in (ellipsis_range(Integer(1),Ellipsis,Integer(6)))) True 
- sage.modular.modsym.heilbronn.hecke_images_gamma0_weight_k(u, v, i, N, k, indices, R)[source]¶
- INPUT: - u,- v,- N– integers so that \(\gcd(u,v,N) = 1\)
- i– integer with \(0 \le i \le k-2\)
- k– weight
- indices– list of positive integers
- R– matrix over \(\QQ\) that writes each elements of \(\textnormal{P1} = \textnormal{P1List}(N)\) in terms of a subset of \(\textnormal{P1}\)
 - OUTPUT: a dense matrix with rational entries whose columns are the images \(T_n(x)\) for \(n\) in indices and \(x\) the Manin symbol [\(X^i*Y^{(k-2-i)}\), \((u,v)\)], expressed in terms of the basis. - EXAMPLES: - sage: M = ModularSymbols(15,6,sign=-1) sage: R = M.manin_gens_to_basis() sage: a,b,c = sage.modular.modsym.heilbronn.hecke_images_gamma0_weight_k(4,1,3,15,6,[1,11,12], R) sage: x = M((3,4,1)) ; x.element() == a True sage: M.T(11)(x).element() == b True sage: M.T(12)(x).element() == c True - >>> from sage.all import * >>> M = ModularSymbols(Integer(15),Integer(6),sign=-Integer(1)) >>> R = M.manin_gens_to_basis() >>> a,b,c = sage.modular.modsym.heilbronn.hecke_images_gamma0_weight_k(Integer(4),Integer(1),Integer(3),Integer(15),Integer(6),[Integer(1),Integer(11),Integer(12)], R) >>> x = M((Integer(3),Integer(4),Integer(1))) ; x.element() == a True >>> M.T(Integer(11))(x).element() == b True >>> M.T(Integer(12))(x).element() == c True 
- sage.modular.modsym.heilbronn.hecke_images_nonquad_character_weight2(u, v, N, indices, chi, R)[source]¶
- Return images of the Hecke operators \(T_n\) for \(n\) in the list indices, where \(\chi\) must be a quadratic Dirichlet character with values in \(\QQ\). - \(R\) is assumed to be the relation matrix of a weight modular symbols space over \(\QQ\) with character \(\chi\). - INPUT: - u,- v,- N– integers so that \(\gcd(u,v,N) = 1\)
- indices– list of positive integers
- chi– a Dirichlet character that takes values in a nontrivial extension of \(\QQ\)
- R– matrix over \(\QQ\) that writes each elements of \(\textnormal{P1} = \textnormal{P1List}(N)\) in terms of a subset of \(\textnormal{P1}\)
 - OUTPUT: a dense matrix with entries in the field \(\QQ(\chi)\) (the values of \(\chi\)) whose columns are the images \(T_n(x)\) for \(n\) in indices and \(x\) the Manin symbol \((u,v)\), expressed in terms of the basis. - EXAMPLES: - sage: chi = DirichletGroup(13).0^2 sage: M = ModularSymbols(chi) sage: eps = M.character() sage: R = M.manin_gens_to_basis() sage: sage.modular.modsym.heilbronn.hecke_images_nonquad_character_weight2(1,0,13,[1,2,6],eps,R) [ 1 0 0 0] [ zeta6 + 2 0 0 -1] [ 7 -2*zeta6 + 1 -zeta6 - 1 -2*zeta6] sage: x = M((1,0)); x.element() (1, 0, 0, 0) sage: M.T(2)(x).element() (zeta6 + 2, 0, 0, -1) sage: M.T(6)(x).element() (7, -2*zeta6 + 1, -zeta6 - 1, -2*zeta6) - >>> from sage.all import * >>> chi = DirichletGroup(Integer(13)).gen(0)**Integer(2) >>> M = ModularSymbols(chi) >>> eps = M.character() >>> R = M.manin_gens_to_basis() >>> sage.modular.modsym.heilbronn.hecke_images_nonquad_character_weight2(Integer(1),Integer(0),Integer(13),[Integer(1),Integer(2),Integer(6)],eps,R) [ 1 0 0 0] [ zeta6 + 2 0 0 -1] [ 7 -2*zeta6 + 1 -zeta6 - 1 -2*zeta6] >>> x = M((Integer(1),Integer(0))); x.element() (1, 0, 0, 0) >>> M.T(Integer(2))(x).element() (zeta6 + 2, 0, 0, -1) >>> M.T(Integer(6))(x).element() (7, -2*zeta6 + 1, -zeta6 - 1, -2*zeta6) 
- sage.modular.modsym.heilbronn.hecke_images_quad_character_weight2(u, v, N, indices, chi, R)[source]¶
- INPUT: - u,- v,- N– integers so that \(\gcd(u,v,N) = 1\)
- indices– list of positive integers
- chi– a Dirichlet character that takes values in \(\QQ\)
- R– matrix over \(\QQ(\chi)\) that writes each elements of \(\textnormal{P1} = \textnormal{P1List}(N)\) in terms of a subset of \(\textnormal{P1}\)
 - OUTPUT: a dense matrix with entries in the rational field \(\QQ\) (the values of \(\chi\)) whose columns are the images \(T_n(x)\) for \(n\) in indices and \(x\) the Manin symbol \((u,v)\), expressed in terms of the basis. - EXAMPLES: - sage: chi = DirichletGroup(29,QQ).0 sage: M = ModularSymbols(chi) sage: R = M.manin_gens_to_basis() sage: sage.modular.modsym.heilbronn.hecke_images_quad_character_weight2(2,1,29,[1,3,4],chi,R) [ 0 0 0 0 0 -1] [ 0 1 0 1 1 1] [ 0 -2 0 2 -2 -1] sage: x = M((2,1)) ; x.element() (0, 0, 0, 0, 0, -1) sage: M.T(3)(x).element() (0, 1, 0, 1, 1, 1) sage: M.T(4)(x).element() (0, -2, 0, 2, -2, -1) - >>> from sage.all import * >>> chi = DirichletGroup(Integer(29),QQ).gen(0) >>> M = ModularSymbols(chi) >>> R = M.manin_gens_to_basis() >>> sage.modular.modsym.heilbronn.hecke_images_quad_character_weight2(Integer(2),Integer(1),Integer(29),[Integer(1),Integer(3),Integer(4)],chi,R) [ 0 0 0 0 0 -1] [ 0 1 0 1 1 1] [ 0 -2 0 2 -2 -1] >>> x = M((Integer(2),Integer(1))) ; x.element() (0, 0, 0, 0, 0, -1) >>> M.T(Integer(3))(x).element() (0, 1, 0, 1, 1, 1) >>> M.T(Integer(4))(x).element() (0, -2, 0, 2, -2, -1)