CoCalc Public Fileswww / tables / magma_src / ModFrm / categories.mOpen with one click!
Author: William A. Stein
1
freeze;
2
3
/****-*-magma-* EXPORT DATE: 2004-03-08 ************************************
4
5
MODFORM: Modular Forms in MAGMA
6
7
William A. Stein
8
9
FILE: categories.m
10
11
04/06/03: Added attribute t2_eigenvector.
12
13
$Header: /home/was/magma/packages/ModFrm/code/RCS/categories.m,v 1.7 2002/08/26 22:26:59 was Exp $
14
15
$Log: categories.m,v $
16
Revision 1.7 2002/08/26 22:26:59 was
17
Really changed modular_symbols to mf_modular_symbols.
18
19
Revision 1.6 2002/08/26 21:10:26 was
20
changed modular_symbols to mf_modular_symbols
21
22
Revision 1.5 2002/04/18 23:15:49 was
23
added atkin_operator
24
25
Revision 1.4 2002/04/13 07:26:27 was
26
Added type_param for things like the p for p-newforms.
27
28
Revision 1.3 2001/05/30 18:53:55 was
29
Created.
30
31
Revision 1.2 2001/05/16 03:54:52 was
32
Initial code.
33
34
Revision 1.1 2001/05/16 03:50:49 was
35
Initial revision
36
37
38
***************************************************************************/
39
40
41
declare attributes ModFrm:
42
ambient_space,
43
44
base_ring,
45
46
base_extend_map, // save map if created by BaseExtend
47
48
associated_space_over_z, // what this is the tensor product of.
49
50
type, // "ring", "ambient", "cusp", "eis", "new",
51
// "cusp_new", "eis_new", "cusp_newform", "eis_newform"
52
type_param, // type parameter: 0 for every type except new when it can be, e.g., p
53
// for the p-new forms.
54
55
// subspaces (only set by ambient space)
56
cusp, eis, new, cusp_new, eis_new,
57
58
// if this space was made to support a newform, the
59
// the ambient space it was made from is pointed to here.
60
made_from_newform,
61
62
is_cuspidal,
63
cuspidal_subspace,
64
65
is_new,
66
new_subspace,
67
68
is_eisenstein,
69
eisenstein_subspace,
70
71
// the primitive eisenstein series and their twists over Q(zeta_n)
72
eisenstein_series,
73
74
dimension,
75
76
// the character(s) of the space; takes values in base_ring
77
dirichlet_character,
78
79
// true if this is a space of modular forms for Gamma_1(N)
80
is_gamma1,
81
82
weight,
83
84
// the level of this space of modular forms.
85
level,
86
87
// corresponding space(s) of modular symbols
88
mf_modular_symbols,
89
90
// The newforms in M.
91
newforms,
92
93
// order the newforms; this space of modular forms is the
94
// parent of the which_newform-th newform.
95
which_newform,
96
97
// The basis of ModFrmElt's
98
basis,
99
100
// Basis of q-expansions for the full space
101
// This is a pair <prec, [qexps]>
102
q_expansion_basis,
103
104
// Hecke polynomials computed so far.
105
hecke_polynomial,
106
107
t2_eigenvector, // used in computing hecke polynomials quickly in some cases.
108
109
// Hecke operators computed so far.
110
hecke_operator,
111
112
// Atkin-Lehner operators computed so far.
113
atkin_operator,
114
115
q_name, // used in "q-expansions".
116
default_precision,
117
118
precision_bound // <= Sturm bound
119
120
;
121
122
123
124
declare attributes ModFrmElt:
125
degree,
126
127
// representation of this element as a vector in the parent space
128
element,
129
130
// true if and only if this form is a newform.
131
is_newform,
132
133
nebentype,
134
135
// this element is the eigenform qEigenform(modular_symbols, ..).
136
mf_modular_symbols,
137
138
// the space of modular forms that contains this element.
139
parent,
140
141
// known q-expansion of this element.
142
q_expansion,
143
// Used by MoveIntoPowerSeriesRingOverANumberField after recomputing
144
// q_expansion
145
number_field_coercion_map,
146
cyclotomic_embedding_map,
147
148
weight,
149
150
// which Galois conjugate this newform is
151
which_conjugate,
152
first_conjugate,
153
154
// various maps from the coefficient field
155
modp_reductions,
156
padic_embeddings,
157
complex_embeddings,
158
159
// eisenstein series coming from psi, chi
160
eisenstein,
161
162
// associated elliptic curve
163
elliptic_curve,
164
165
// q-expansion "gadget", i.e., a function that gives q-expansions
166
q_expansion_gadget,
167
168
// theta-series data
169
theta,
170
171
// q-expansion from *,-,+, scalar:
172
// created_from := <op, g, h>,
173
// where op is "*", "-", "+", or "scalar", and g and h are modular forms,
174
// except g is a scalar when op is "scalar",
175
// NOTE: this attribute should only be set if its clear that
176
// circular references won't be created!
177
created_from
178
;
179
180
181
182
183
function CopyOfModFrm(M)
184
error "Not written";
185
end function;
186
187
function CopyOfModFrmElt(f)
188
assert Type(f) eq ModFrmElt;
189
g := HackobjCreateRaw(ModFrmElt);
190
if assigned f`degree then
191
g`degree := f`degree;
192
end if;
193
if assigned f`element then
194
g`element := f`element ;
195
end if;
196
if assigned f`is_newform then
197
g`is_newform := f`is_newform ;
198
end if;
199
if assigned f`mf_modular_symbols then
200
g`mf_modular_symbols := f`mf_modular_symbols ;
201
end if;
202
if assigned f`parent then
203
g`parent := f`parent ;
204
end if;
205
if assigned f`q_expansion then
206
g`q_expansion := f`q_expansion ;
207
end if;
208
if assigned f`weight then
209
g`weight := f`weight;
210
end if;
211
if assigned f`which_conjugate then
212
g`which_conjugate := f`which_conjugate;
213
end if;
214
if assigned f`eisenstein then
215
g`eisenstein := f`eisenstein;
216
end if;
217
if assigned f`elliptic_curve then
218
g`elliptic_curve := f`elliptic_curve;
219
end if;
220
if assigned f`q_expansion_gadget then
221
g`q_expansion_gadget := f`q_expansion_gadget;
222
end if;
223
if assigned f`theta then
224
g`theta := f`theta;
225
end if;
226
if assigned f`created_from then
227
g`created_from := f`created_from;
228
end if;
229
if assigned f`modp_reductions then
230
g`modp_reductions := f`modp_reductions;
231
end if;
232
if assigned f`padic_embeddings then
233
g`padic_embeddings := f`padic_embeddings;
234
end if;
235
if assigned f`complex_embeddings then
236
g`complex_embeddings := f`complex_embeddings;
237
end if;
238
return g;
239
end function;
240
241
242