Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
241852 views
1
Plan to finish a first complete HMF over Q(sqrt(5)) of weight (2,2)
2
implementation that works and is very fast. Goal is to finish this in
3
less than 24 from now!
4
5
[x] P^1(O_F/N) using fast residue rings
6
[x] is_square
7
[x] sqrt
8
[x] local splitting for O_F/P^n
9
[x] Mat2x2(O_F/N) -- matrix object with optimal action on P^1(O_F/N) elts.
10
[x] 120 icosians
11
[x] Dividing P^1 into orbits for action of R^*.
12
[x] write fast version of code for hecke operator T_P for odd P
13
14
[x] See this for ModN_Reduction. # TODO: This algorithm only makes sense when trying to compute splitting at one prime, but we're applying it to a product of primes!
15
Example: P = IcosiansModP1ModN(F.primes_above(5) * F.ideal(3))
16
17
18
[ ] code for hecke operator T_2 (hardcode norm 2 elts); easy once have splittings at all primes
19
[ ] make computation of the alpha's for computing Hecke operators fast, so we can compute T_p for p < 10000 (say).
20
[ ] refactor sqrt5_fast.pyx -- it's too big.
21
22
[ ] BUG:
23
24
Good example:
25
sage: P = sqrt5_fast.IcosiansModP1ModN(F.ideal(8)); P
26
The 2 orbits for the action of the Icosian group on Projective line modulo the ideal (8) of norm 64
27
sage: o = P.compute_std_to_rep_table_debug(); o
28
Found representative number 0: (0, 1)
29
It has an orbit of size 60
30
Found representative number 1: (1, 1)
31
It has an orbit of size 31
32
[[0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 24, 25, 27, 28, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 67, 68, 69, 70, 73, 74, 75, 76, 78, 79], [1, 3, 12, 13, 14, 22, 23, 26, 29, 31, 32, 38, 43, 49, 52, 60, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]]
33
sage: P.cardinality()
34
2
35
sage: P.
36
P.cardinality P.compute_std_to_rep_table_debug
37
P.compute_std_to_rep_table P.hecke_matrix
38
sage: Proj
39
ProjectiveGeometryDesign ProjectiveHypersurface ProjectiveSpace
40
sage: P1
41
P1List P1ModList P1NFList P1_orbits P1_orbits2
42
sage: sqrt5_fast.ProjectiveLineModN(F.ideal(8)).cardinality()
43
80
44
45
-----------------------------------
46
47
sage: P = IcosiansModP1ModN(F.ideal(9))
48
sage: o = P.compute_std_to_rep_table_debug(); o
49
Found representative number 0: (0, 1)
50
It has an orbit of size 61
51
Found representative number 1: (1 + g, 1)
52
It has an orbit of size 35
53
54
which violates orbit stabilizer theorem; plus orbits aren't disjoint!
55
56
57
sage: P = IcosiansModP1ModN(F.ideal(27))
58
sage: P.cardinality() # it should be 14
59
17
60
sage: time T = P.hecke_matrix(F.primes_above(5)[0])
61
CPU times: user 0.01 s, sys: 0.00 s, total: 0.01 s
62
Wall time: 0.01 s
63
sage: T.fcp()
64
(x - 6) * x^6 * (x^10 - 34*x^8 + 2*x^7 + 366*x^6 - 56*x^5 - 1302*x^4 + 323*x^3 + 239*x^2 + 6*x - 12)
65
66
sage: t5 = P.hecke_matrix(F.primes_above(5)[0])
67
sage: t57 = P.hecke_matrix(F.primes_above(7)[0])
68
sage: t7 = P.hecke_matrix(F.primes_above(7)[0])
69
sage: t5*t7 == t7*t5
70
False
71
72
73
74
75
3 0
76
7 1
77
9 1
78
11 3
79
13 3
80
17 5
81
19 7
82
21 9
83
23 9
84
27 16
85
29 15
86
31 19
87
33 23
88
37 23
89
39 29
90
41 31
91
43 31
92
47 37
93
49 44
94
51 49
95
53 47
96
57 67
97
59 59
98
61 214
99
63 83
100
67 75
101
69 89
102
71 87
103
73 89
104
77 119
105
79 107
106
81 159
107
83 115
108
87 436
109
89 135
110
91 143
111
93 629
112
97 157
113
99 287
114
115
compared to:
116
117
> for N in [2..100] do if GCD(N,10) eq 1 then print N, Dimension(HilbertCuspForms(F, Integers(F)*N)); end if; end for;
118
3 0
119
120
7 1
121
9 1
122
11 3
123
13 3
124
17 5
125
19 7
126
21 9
127
23 9
128
27 13
129
29 15
130
31 19
131
33 23
132
37 23
133
39 29
134
41 31
135
43 31
136
47 37
137
49 41
138
51 49
139
53 47
140
57 67
141
59 59
142
61 67
143
63 75
144
67 75
145
69 89
146
71 87
147
73 89
148
77 119
149
79 107
150
81 121
151
83 115
152
87 151
153
89 135
154
91 143
155
93 171
156
97 157
157
99 215
158
159