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