2011-07-14: vatsal twist work

316 days ago by WilliamStein

def pos_rank(A): """ INPUT: -- A -- sign 0 simple modular symbols space OUTPUT: -- bool; True only if A has positive (analytic) rank """ M = A.ambient_module() phi = A.rational_period_mapping() j = A.weight()//2 - 1 return phi(M([j, 0,oo])) == 0 def twists(A): """ INPUT: -- A -- sign 0 simple modular symbols space OUTPUT: -- list of primitive *quadratic* characters chi of conductor dividing the level of A such that L(A,chi,1) == 0 -- similar list but where L(A,chi,1) != 0 """ if A.sign() != 0: raise ValueError, "A must have sign 0" phi = A.rational_period_mapping() N = A.level() M = A.ambient_module() assert A.weight()%2 == 0 j = A.weight()//2 - 1 zero = [] nonzero = [] for c in (4*N).divisors(): for chi in DirichletGroup(c,QQ): if chi.order() == 2 and chi.is_primitive(): w = M.twisted_winding_element(j, chi) if phi(w) == 0: zero.append(chi) else: nonzero.append(chi) return zero, nonzero 
       
 
       
 
       

Double check with an elliptic curve or two:

A = ModularSymbols(11,2).cuspidal_subspace() twists(A) 
       
(False, [], [Dirichlet character modulo 11 of conductor 11 mapping 2
|--> -1])
(False, [], [Dirichlet character modulo 11 of conductor 11 mapping 2 |--> -1])
EllipticCurve('11a').quadratic_twist(11).analytic_rank() 
       
1
1

In this example, *every* single twist vanishes:

A = ModularSymbols(131,2).new_subspace().decomposition()[1] twists(A) 
       
(True, [Dirichlet character modulo 131 of conductor 131 mapping 2
|--> -1], [])
(True, [Dirichlet character modulo 131 of conductor 131 mapping 2 |--> -1], [])
factor(131) 
       
131
131
 
       

I suddenly wonder if 131 is the first example if we don't restrict to rational newforms of weight 2?

def pr(z): return str([c.conductor() for c in z]).replace(' ','') for N in [11..131]: D = ModularSymbols(N, 2).cuspidal_subspace().new_subspace().decomposition() for i, A in enumerate(D): if pos_rank(A): zero, nonzero = twists(A) print N, i, A.dimension()/2, pr(zero), pr(nonzero) 
       
37 0 1 [37] [4,148]
43 0 1 [4,172] [43]
53 0 1 [53] [4,212]
57 0 1 [19,57,76] [3,4,12,228]
58 0 1 [8,232] [4,8,29,116,232]
61 0 1 [61] [4,244]
65 0 1 [20,52,65] [4,5,13,260]
67 1 2 [4,268] [67]
73 1 2 [73] [4,292]
77 0 1 [11,44,77] [4,7,28,308]
79 0 1 [4,316] [79]
82 0 1 [8,41,328] [4,8,164,328]
83 0 1 [4,332] [83]
85 1 2 [20,68,85] [4,5,17,340]
88 0 1 [11,88] [4,8,8,44,88]
89 0 1 [89] [4,356]
91 0 1 [4,7,364] [13,28,52,91]
91 1 1 [4,13,28,52,364] [7,91]
92 0 1 [23,92,184] [4,8,8,184]
93 0 2 [31,93,124] [3,4,12,372]
97 0 3 [97] [4,388]
99 0 1 [4,44,132] [3,11,12,33]
101 0 1 [101] [4,404]
102 0 1 [4,24,51,136,136,204,408] [3,8,8,12,17,24,68,408]
103 0 2 [4,412] [103]
106 0 1 [8,424] [4,8,53,212,424]
107 0 2 [4,428] [107]
109 1 3 [109] [4,436]
112 0 1 [56] [4,7,8,8,28,56]
113 2 3 [113] [4,452]
115 1 2 [4,23,460] [5,20,92,115]
117 0 1 [39,52,156] [3,4,12,13]
118 0 1 [4,59,236,472] [8,8,472]
121 1 1 [11] [4,44]
122 0 1 [8,488,488] [4,8,61,244]
123 0 1 [4,12,41,164,492] [3,123]
123 1 1 [3,4,492] [12,41,123,164]
124 0 1 [31,124,248] [4,8,8,248]
125 0 2 [20] [4,5]
127 0 3 [4,508] [127]
128 0 1 [] [4,8,8]
129 0 1 [43,129,172] [3,4,12,516]
130 0 1 [8,40,65,104,520] [4,5,8,13,20,40,52,104,260,520]
131 0 1 [4,131,524] []
37 0 1 [37] [4,148]
43 0 1 [4,172] [43]
53 0 1 [53] [4,212]
57 0 1 [19,57,76] [3,4,12,228]
58 0 1 [8,232] [4,8,29,116,232]
61 0 1 [61] [4,244]
65 0 1 [20,52,65] [4,5,13,260]
67 1 2 [4,268] [67]
73 1 2 [73] [4,292]
77 0 1 [11,44,77] [4,7,28,308]
79 0 1 [4,316] [79]
82 0 1 [8,41,328] [4,8,164,328]
83 0 1 [4,332] [83]
85 1 2 [20,68,85] [4,5,17,340]
88 0 1 [11,88] [4,8,8,44,88]
89 0 1 [89] [4,356]
91 0 1 [4,7,364] [13,28,52,91]
91 1 1 [4,13,28,52,364] [7,91]
92 0 1 [23,92,184] [4,8,8,184]
93 0 2 [31,93,124] [3,4,12,372]
97 0 3 [97] [4,388]
99 0 1 [4,44,132] [3,11,12,33]
101 0 1 [101] [4,404]
102 0 1 [4,24,51,136,136,204,408] [3,8,8,12,17,24,68,408]
103 0 2 [4,412] [103]
106 0 1 [8,424] [4,8,53,212,424]
107 0 2 [4,428] [107]
109 1 3 [109] [4,436]
112 0 1 [56] [4,7,8,8,28,56]
113 2 3 [113] [4,452]
115 1 2 [4,23,460] [5,20,92,115]
117 0 1 [39,52,156] [3,4,12,13]
118 0 1 [4,59,236,472] [8,8,472]
121 1 1 [11] [4,44]
122 0 1 [8,488,488] [4,8,61,244]
123 0 1 [4,12,41,164,492] [3,123]
123 1 1 [3,4,492] [12,41,123,164]
124 0 1 [31,124,248] [4,8,8,248]
125 0 2 [20] [4,5]
127 0 3 [4,508] [127]
128 0 1 [] [4,8,8]
129 0 1 [43,129,172] [3,4,12,516]
130 0 1 [8,40,65,104,520] [4,5,8,13,20,40,52,104,260,520]
131 0 1 [4,131,524] []
 
       
 
       

Now the interesting search

def pr(z): return str([c.conductor() for c in z]).replace(' ','') for N in [1..100]: print "Level %s"%N D = ModularSymbols(N, 4).cuspidal_subspace().new_subspace().decomposition() for i, A in enumerate(D): if pos_rank(A): zero, nonzero = twists(A) print N, i, A.dimension()/2, pr(zero), pr(nonzero) 
       
Level 1
Level 2
Level 3
Level 4
Level 5
Level 6
Level 7
Level 8
Level 9
Level 10
Level 11
Level 12
Level 13
13 0 1 [] [4,13,52]
Level 14
Level 15
Level 16
Level 17
17 0 1 [] [4,17,68]
Level 18
Level 19
19 0 1 [] [4,19,76]
Level 20
Level 21
21 0 1 [] [3,4,7,12,21,28,84]
Level 22
22 0 1 [] [4,8,8,11,44,88,88]
Level 23
23 0 1 [] [4,23,92]
Level 24
Level 25
25 0 1 [] [4,5,20]
Level 26
Level 27
27 0 1 [] [3,4,12]
Level 28
28 0 1 [] [4,7,8,8,28,56,56]
Level 29
29 0 2 [] [4,29,116]
Level 30
Level 31
31 0 2 [] [4,31,124]
Level 32
32 0 1 [] [4,8,8]
Level 33
33 0 1 [] [3,4,11,12,33,44,132]
33 1 1 [] [3,4,11,12,33,44,132]
Level 34
34 0 1 [] [4,8,8,17,68,136,136]
Level 35
35 0 1 [] [4,5,7,20,28,35,140]
Level 36
Level 37
37 0 4 [] [4,37,148]
Level 38
38 0 1 [] [4,8,8,19,76,152,152]
Level 39
39 0 1 [] [3,4,12,13,39,52,156]
Level 40
40 0 1 [] [4,5,8,8,20,40,40]
Level 41
41 0 3 [] [4,41,164]
Level 42
Level 43
43 0 4 [] [4,43,172]
Level 44
44 0 1 [] [4,8,8,11,44,88,88]
Level 45
45 0 1 [] [3,4,5,12,15,20,60]
45 2 1 [] [3,4,5,12,15,20,60]
Level 46
46 0 1 [] [4,8,8,23,92,184,184]
46 1 1 [] [4,8,8,23,92,184,184]
Level 47
47 0 3 [] [4,47,188]
Level 48
48 0 1 [] [3,4,8,8,12,24,24]
Level 49
49 0 1 [] [4,7,28]
49 1 1 [] [4,7,28]
49 2 1 [] [4,7,28]
Level 50
50 1 1 [] [4,5,8,8,20,40,40]
Level 51
51 1 1 [] [3,4,12,17,51,68,204]
51 2 1 [] [3,4,12,17,51,68,204]
Level 52
52 0 1 [] [4,8,8,13,52,104,104]
Level 53
53 0 1 [] [4,53,212]
53 1 4 [] [4,53,212]
Level 54
Traceback (click to the left of this block for traceback)
...
__SAGE__
Level 1
Level 2
Level 3
Level 4
Level 5
Level 6
Level 7
Level 8
Level 9
Level 10
Level 11
Level 12
Level 13
13 0 1 [] [4,13,52]
Level 14
Level 15
Level 16
Level 17
17 0 1 [] [4,17,68]
Level 18
Level 19
19 0 1 [] [4,19,76]
Level 20
Level 21
21 0 1 [] [3,4,7,12,21,28,84]
Level 22
22 0 1 [] [4,8,8,11,44,88,88]
Level 23
23 0 1 [] [4,23,92]
Level 24
Level 25
25 0 1 [] [4,5,20]
Level 26
Level 27
27 0 1 [] [3,4,12]
Level 28
28 0 1 [] [4,7,8,8,28,56,56]
Level 29
29 0 2 [] [4,29,116]
Level 30
Level 31
31 0 2 [] [4,31,124]
Level 32
32 0 1 [] [4,8,8]
Level 33
33 0 1 [] [3,4,11,12,33,44,132]
33 1 1 [] [3,4,11,12,33,44,132]
Level 34
34 0 1 [] [4,8,8,17,68,136,136]
Level 35
35 0 1 [] [4,5,7,20,28,35,140]
Level 36
Level 37
37 0 4 [] [4,37,148]
Level 38
38 0 1 [] [4,8,8,19,76,152,152]
Level 39
39 0 1 [] [3,4,12,13,39,52,156]
Level 40
40 0 1 [] [4,5,8,8,20,40,40]
Level 41
41 0 3 [] [4,41,164]
Level 42
Level 43
43 0 4 [] [4,43,172]
Level 44
44 0 1 [] [4,8,8,11,44,88,88]
Level 45
45 0 1 [] [3,4,5,12,15,20,60]
45 2 1 [] [3,4,5,12,15,20,60]
Level 46
46 0 1 [] [4,8,8,23,92,184,184]
46 1 1 [] [4,8,8,23,92,184,184]
Level 47
47 0 3 [] [4,47,188]
Level 48
48 0 1 [] [3,4,8,8,12,24,24]
Level 49
49 0 1 [] [4,7,28]
49 1 1 [] [4,7,28]
49 2 1 [] [4,7,28]
Level 50
50 1 1 [] [4,5,8,8,20,40,40]
Level 51
51 1 1 [] [3,4,12,17,51,68,204]
51 2 1 [] [3,4,12,17,51,68,204]
Level 52
52 0 1 [] [4,8,8,13,52,104,104]
Level 53
53 0 1 [] [4,53,212]
53 1 4 [] [4,53,212]
Level 54
^CTraceback (most recent call last):        for i, A in enumerate(D):
  File "", line 1, in <module>
    
  File "/private/var/folders/7y/7y-O1iZOGTmMUMnLq7otq++++TI/-Tmp-/tmpzaDEny/___code___.py", line 6, in <module>
    exec compile(u'for N in (ellipsis_range(_sage_const_1 ,Ellipsis,_sage_const_100 )):\n    print "Level %s"%N\n    D = ModularSymbols(N, _sage_const_4 ).cuspidal_subspace().new_subspace().decomposition()\n    for i, A in enumerate(D):\n        if pos_rank(A):\n            zero, nonzero = twists(A)\n            print N, i, A.dimension()/_sage_const_2 , pr(zero), pr(nonzero)
  File "", line 3, in <module>
    
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/hecke/module.py", line 965, in decomposition
    t = T.hecke_operator(p).matrix()
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/hecke/hecke_operator.py", line 753, in matrix
    self.__matrix = self.parent().hecke_matrix(self.__n, *args, **kwds)
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/hecke/algebra.py", line 592, in hecke_matrix
    return self.__M.hecke_matrix(n, *args, **kwds)
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/hecke/module.py", line 1321, in hecke_matrix
    T = self._compute_hecke_matrix(n)
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/hecke/module.py", line 217, in _compute_hecke_matrix
    return self._compute_hecke_matrix_prime(n, **kwds)
  File "/Users/wstein/sage/install/current/local/lib/python2.6/site-packages/sage/modular/modsym/ambient.py", line 1022, in _compute_hecke_matrix_prime
    Tp = W._matrix_times_matrix_dense(R)
KeyboardInterrupt
__SAGE__
M = ModularSymbols(13,4) D = M.cuspidal_subspace().decomposition(); D 
       
[
Modular Symbols subspace of dimension 2 of Modular Symbols space of
dimension 8 for Gamma_0(13) of weight 4 with sign 0 over Rational Field,
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 8 for Gamma_0(13) of weight 4 with sign 0 over Rational Field
]
[
Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 8 for Gamma_0(13) of weight 4 with sign 0 over Rational Field,
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 8 for Gamma_0(13) of weight 4 with sign 0 over Rational Field
]
A = D[0] phi = A.rational_period_mapping() 
       
e = M([1,0,oo]); e 
       
-3/28*[X^2,(1,4)] + 1/7*[X^2,(1,5)] - 9/28*[X^2,(1,7)] +
9/14*[X^2,(1,9)] - 6/7*[X^2,(1,10)] + 23/28*[X^2,(1,11)] -
9/28*[X^2,(1,12)]
-3/28*[X^2,(1,4)] + 1/7*[X^2,(1,5)] - 9/28*[X^2,(1,7)] + 9/14*[X^2,(1,9)] - 6/7*[X^2,(1,10)] + 23/28*[X^2,(1,11)] - 9/28*[X^2,(1,12)]
phi(e) 
       
(0, 0)
(0, 0)
phi(M([0, 0, oo])) 
       
(13, 0)
(13, 0)
G = DirichletGroup(13, QQ) chi = G.0 
       
phi(M.twisted_winding_element(1, chi)) 
       
(1404, 13/2)
(1404, 13/2)
chi(-13) 
       
0
0
A.q_eigenform(10,'a') 
       
q - 5*q^2 - 7*q^3 + 17*q^4 - 7*q^5 + 35*q^6 - 13*q^7 - 45*q^8 + 22*q^9 +
O(q^10)
q - 5*q^2 - 7*q^3 + 17*q^4 - 7*q^5 + 35*q^6 - 13*q^7 - 45*q^8 + 22*q^9 + O(q^10)
M2 = ModularSymbols(169,4) time D2 = M2.cuspidal_submodule().new_submodule() 
       
Time: CPU 1.15 s, Wall: 1.15 s
Time: CPU 1.15 s, Wall: 1.15 s
time DD2 = D2.decomposition(12) 
       
Time: CPU 17.43 s, Wall: 17.46 s
Time: CPU 17.43 s, Wall: 17.46 s
for B in DD2: if B.dimension() == 2: print [B.hecke_matrix(p)[0,0] for p in [2,3,5,7]] 
       
[-4, 2, -17, -20]
[-3, -1, 9, -15]
[3, -1, -9, 15]
[4, 2, 17, 20]
[5, -7, 7, 13]
[-4, 2, -17, -20]
[-3, -1, 9, -15]
[3, -1, -9, 15]
[4, 2, 17, 20]
[5, -7, 7, 13]
B = DD2[4] print [B.hecke_matrix(p)[0,0] for p in [2,3,5,7]] 
       
[5, -7, 7, 13]
[5, -7, 7, 13]
time phi = B.rational_period_mapping() 
       
Time: CPU 1.78 s, Wall: 1.78 s
Time: CPU 1.78 s, Wall: 1.78 s
phi(M2([2,0,oo])) 
       
(1, 0)
(1, 0)
def pr(z): return str([c.conductor() for c in z]).replace(' ','') for N in [54..100]: print "Level %s"%N D = ModularSymbols(N, 4).cuspidal_subspace().new_subspace().decomposition() for i, A in enumerate(D): if pos_rank(A): zero, nonzero = twists(A) print N, i, A.dimension()/2, pr(zero), pr(nonzero) 
       
Level 54
54 0 1 [] [3,4,8,8,12,24,24]
Level 55
55 0 1 [] [4,5,11,20,44,55,220]
55 1 2 [] [4,5,11,20,44,55,220]
Level 56
56 0 1 [] [4,7,8,8,28,56,56]
Level 57
57 0 1 [] [3,4,12,19,57,76,228]
57 2 3 [] [3,4,12,19,57,76,228]
Level 58
58 1 1 [] [4,8,8,29,116,232,232]
58 2 2 [] [4,8,8,29,116,232,232]
Level 59
59 0 2 [] [4,59,236]
59 1 2 [] [4,59,236]
Level 60
60 0 1 [] [3,4,5,8,8,12,15,20,24,24,40,40,60,120,120]
Level 61
61 0 6 [] [4,61,244]
Level 62
62 0 1 [] [4,8,8,31,124,248,248]
62 1 1 [] [4,8,8,31,124,248,248]
Level 63
63 0 1 [] [3,4,7,12,21,28,84]
63 1 1 [] [3,4,7,12,21,28,84]
Level 64
64 1 1 [] [4,8,8]
64 2 1 [] [4,8,8]
Level 65
65 1 2 [] [4,5,13,20,52,65,260]
65 3 2 [] [4,5,13,20,52,65,260]
Level 66
Level 67
67 0 7 [] [4,67,268]
Level 68
68 0 1 [] [4,8,8,17,68,136,136]
Level 69
69 0 2 [] [3,4,12,23,69,92,276]
69 1 2 [] [3,4,12,23,69,92,276]
Level 70
70 1 1 [] [4,5,7,8,8,20,28,35,40,40,56,56,140,280,280]
70 2 1 [] [4,5,7,8,8,20,28,35,40,40,56,56,140,280,280]
Level 71
71 0 1 [] [4,71,284]
71 1 4 [] [4,71,284]
Level 72
72 0 1 [] [3,4,8,8,12,24,24]
72 1 1 [24] [3,4,8,8,12,24]
Level 73
73 0 1 [] [4,73,292]
73 1 7 [] [4,73,292]
Level 74
74 0 1 [] [4,8,8,37,148,296,296]
74 1 1 [] [4,8,8,37,148,296,296]
Level 75
75 0 1 [] [3,4,5,12,15,20,60]
75 2 2 [] [3,4,5,12,15,20,60]
Level 76
76 0 2 [] [4,8,8,19,76,152,152]
Level 77
77 1 2 [] [4,7,11,28,44,77,308]
77 2 4 [] [4,7,11,28,44,77,308]
Level 78
Level 54
54 0 1 [] [3,4,8,8,12,24,24]
Level 55
55 0 1 [] [4,5,11,20,44,55,220]
55 1 2 [] [4,5,11,20,44,55,220]
Level 56
56 0 1 [] [4,7,8,8,28,56,56]
Level 57
57 0 1 [] [3,4,12,19,57,76,228]
57 2 3 [] [3,4,12,19,57,76,228]
Level 58
58 1 1 [] [4,8,8,29,116,232,232]
58 2 2 [] [4,8,8,29,116,232,232]
Level 59
59 0 2 [] [4,59,236]
59 1 2 [] [4,59,236]
Level 60
60 0 1 [] [3,4,5,8,8,12,15,20,24,24,40,40,60,120,120]
Level 61
61 0 6 [] [4,61,244]
Level 62
62 0 1 [] [4,8,8,31,124,248,248]
62 1 1 [] [4,8,8,31,124,248,248]
Level 63
63 0 1 [] [3,4,7,12,21,28,84]
63 1 1 [] [3,4,7,12,21,28,84]
Level 64
64 1 1 [] [4,8,8]
64 2 1 [] [4,8,8]
Level 65
65 1 2 [] [4,5,13,20,52,65,260]
65 3 2 [] [4,5,13,20,52,65,260]
Level 66
Level 67
67 0 7 [] [4,67,268]
Level 68
68 0 1 [] [4,8,8,17,68,136,136]
Level 69
69 0 2 [] [3,4,12,23,69,92,276]
69 1 2 [] [3,4,12,23,69,92,276]
Level 70
70 1 1 [] [4,5,7,8,8,20,28,35,40,40,56,56,140,280,280]
70 2 1 [] [4,5,7,8,8,20,28,35,40,40,56,56,140,280,280]
Level 71
71 0 1 [] [4,71,284]
71 1 4 [] [4,71,284]
Level 72
72 0 1 [] [3,4,8,8,12,24,24]
72 1 1 [24] [3,4,8,8,12,24]
Level 73
73 0 1 [] [4,73,292]
73 1 7 [] [4,73,292]
Level 74
74 0 1 [] [4,8,8,37,148,296,296]
74 1 1 [] [4,8,8,37,148,296,296]
Level 75
75 0 1 [] [3,4,5,12,15,20,60]
75 2 2 [] [3,4,5,12,15,20,60]
Level 76
76 0 2 [] [4,8,8,19,76,152,152]
Level 77
77 1 2 [] [4,7,11,28,44,77,308]
77 2 4 [] [4,7,11,28,44,77,308]
Level 78