Heilbronn matrix computation¶
-
class
sage.modular.modsym.heilbronn.
Heilbronn
¶ Bases:
object
-
apply
(u, v, N)¶ Return a list of pairs ((c,d),m), which is obtained as follows:
1) Compute the images (a,b) of the vector (u,v) (mod 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)]
-
to_list
()¶ Return the list of Heilbronn matrices corresponding to
self
.Each matrix is given as a list of four ints.
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]]
-
-
class
sage.modular.modsym.heilbronn.
HeilbronnCremona
¶ Bases:
sage.modular.modsym.heilbronn.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]]
-
p
¶
-
-
class
sage.modular.modsym.heilbronn.
HeilbronnMerel
¶ Bases:
sage.modular.modsym.heilbronn.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]]
-
n
¶
-
-
sage.modular.modsym.heilbronn.
hecke_images_gamma0_weight2
(u, v, N, indices, R)¶ INPUT:
u, v, N
- integers so that gcd(u,v,N) = 1indices
- a list of positive integersR
- matrix over QQ that writes each elements of P1 = P1List(N) in terms of a subset of 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
-
sage.modular.modsym.heilbronn.
hecke_images_gamma0_weight_k
(u, v, i, N, k, indices, R)¶ INPUT:
u, v, N
- integers so that gcd(u,v,N) = 1i
- integer with 0 <= i <= k-2k
- weightindices
- a list of positive integersR
- matrix over QQ that writes each elements of P1 = P1List(N) in terms of a subset of 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
-
sage.modular.modsym.heilbronn.
hecke_images_nonquad_character_weight2
(u, v, N, indices, chi, R)¶ 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) = 1indices
- a list of positive integerschi
- a Dirichlet character that takes values in a nontrivial extension of QQ.R
- matrix over QQ that writes each elements of P1 = P1List(N) in terms of a subset of 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)
-
sage.modular.modsym.heilbronn.
hecke_images_quad_character_weight2
(u, v, N, indices, chi, R)¶ INPUT:
u, v, N
- integers so that gcd(u,v,N) = 1indices
- a list of positive integerschi
- a Dirichlet character that takes values in QQR
- matrix over QQ(chi) that writes each elements of P1 =P1List(N) in terms of a subset of 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)