CoCalc Public Fileswww / papers / discheckediv / disc_wt2 / notesOpen in with one click!
Author: William A. Stein
1
THEOREM: p = 389 is the only prime less than 50000 such that
2
p divides disc(T_0(p)).
3
4
Our aim is to determine whether or not p divides disc(\T_0(p)) for
5
each p < 60000. The following two levels have not been analyzed,
6
because they require more than 800MB memory: 50923, 51437. I'll worry
7
about those later. Up to 60000, excluding those two levels, the only
8
levels where p might divide disc(\T_0(p)) are the following:
9
10
389: ** p does divide discriminant **
11
487: ruled out by charpoly(T_{12})
12
2341: ruled out by charpoly(T_6)
13
7057: ruled out by charpoly(T_{18})
14
15641: ruled out by charpoly(T_6)
15
15661: ruled out by charpoly(T_19)
16
28279: ruled out by charpoly(T_34) (see below for how!)
17
18
19
---------------------------------------------------
20
21
All other levels p up to 60000 are ruled out by compute
22
disc(charpoly(T_q)) modulo p for several q:
23
24
q number of levels < 60000 where q rules out p | disc(T_p)
25
----------------------------------------------------------------------
26
2 5809
27
3 161 (largest: 59471)
28
5 43 (largest: 57793)
29
7 15 (largest: 58699)
30
11 15 (the smallest is 307; the largest 50971)
31
13 2 (they are 577 and 5417)
32
17 3 (they are 17209, 24533, and 47387)
33
19 not used, though 15661 was ruled out using it.
34
35
===================================================
36
37
p=28279: I wasn't able to find a two-dimensional eigenspace working
38
with modulo symbols mod p. So, I computed the mod p kernel of f^2,
39
where f=GCD(charpoly(T2), deriv(charpoly(T2))), then found integers n
40
so that on this 7-dimensional kernel the charpoly of T_n has distinct
41
roots. The first few that I found were 34, 47, 53, and 89.
42
I then computed f = charpoly(T_34) directly on the whole space and
43
found that GCD(f,f') = 1. So p doesn't divide disc(\T_0(p)) for
44
this p!
45
46
47
===================================================
48
49
50
[] 487 is ruled out by considering T_6, I think.
51
[] 7057 has the property that disc(Z[T_n]) is div by p for all n<17 and n=19,
52
but
53
----------------------------
54
> time M := ModularSymbols(7057,2,GF(7057),+1);
55
Time: 2.460
56
> M;
57
Full Modular symbols space of level 7057, weight 2, and dimension 588
58
> R<x> := PolynomialRing(GF(7057));
59
HeckeOp>
60
>
61
>
62
> time T7 := HeckeOperator(M,7); time f7 := CharacteristicPolynomial(T7); GCD(\
63
f7,Derivative(f7));
64
Time: 2.000
65
^[[DTime: 6.360
66
x + 3
67
> time K := Kernel([<2,(x+3)^3>], M);
68
Time: 5.470
69
> K;
70
Modular symbols space of level 7057, weight 2, and dimension 0
71
> time K := Kernel([<7,(x+3)^3>], M);
72
Time: 9.660
73
> K;
74
Modular symbols space of level 7057, weight 2, and dimension 2
75
> time f19 := CharacteristicPolynomial(HeckeOperator(K,19));
76
Time: 7.160
77
> factor(f19);
78
[
79
<x + 6, 1>,
80
<x + 7055, 1>
81
]
82
----------------------------------
83
84
which I think shows that p doesn't divide disc(T).
85
86
QUESTION: Does p divide disc(Z[T_n]) for all n?
87
88
[] 15641 is ruled out using T_6
89
90
<false, 6> // time = 164.339
91
92
[] 15661 not clear: Again, mod 15661 it looks like
93
there are no 2-d eigenspaces, but it's unclear what
94
this implies. Here no single T_n (n < 18) rules it out.
95
----------------------------------------------
96
> time M := ModularSymbols(15661,2,GF(15661),+1);
97
Time: 5.980
98
> M;
99
Full Modular symbols space of level 15661, weight 2, and dimension 1305
100
> R<x> := PolynomialRing(GF(15661));
101
> time T3 := HeckeOperator(M,3); time f3 := CharacteristicPolynomial(T3); GCD(\
102
f3,Derivative(f3));
103
Time: 8.650
104
Time: 54.820
105
x^3 + 3*x^2 + 3*x + 1
106
> factor($1);
107
[
108
<x + 1, 3>
109
]
110
1
111
> time K := Kernel([<3,(x+1)^4>], M);
112
Time: 75.990
113
> K;
114
Modular symbols space of level 15661, weight 2, and dimension 4
115
> DualKernel;
116
117
>> DualKernel;
118
^
119
User error: Identifier 'DualKernel' has not been declared or assigned
120
> time T5:= DualHeckeOperator(K,5);
121
Time: 0.080
122
> fcp(T5);
123
[
124
<x + 1, 1>,
125
<x + 15658, 2>,
126
<x + 15659, 1>
127
]
128
1
129
> time W := Kernel(<5,x+15658>,K);
130
131
>> time W := Kernel(<5,x+15658>,K);
132
^
133
Runtime error in 'Kernel': Bad argument types
134
Argument types given: Tup, ModSym
135
> time W := Kernel([<5,x+15658>],K);
136
Time: 0.010
137
> W;
138
Modular symbols space of level 15661, weight 2, and dimension 2
139
> time T7:= DualHeckeOperator(W,7);
140
fcp(T7);
141
Time: 0.040
142
> fcp(T7);
143
[
144
<x + 15657, 1>,
145
<x + 15660, 1>
146
]
147
1
148
> time W := Kernel([<5,(x+15658)^4>],K);
149
Time: 0.000
150
> W;
151
Modular symbols space of level 15661, weight 2, and dimension 2
152
> time T7:= DualHeckeOperator(W,7);
153
Time: 0.050
154
> fcp(T7);
155
[
156
<x + 15657, 1>,
157
<x + 15660, 1>
158
]
159
1
160
> time K := Kernel([<3,(x+1)^7>], M);
161
^[[D
162
163
Time: 131.610
164
----------------------------------------------
165
166
167