Author: William A. Stein
1
For this to work, you'll have to make the following two modifications:
2
3
1) In dirichlet.m (in the modsym distribution):
4
5
In this intrinsic:
6
intrinsic DirichletGroup(m::RngIntElt,R::Rng,z::RngElt,r::RngIntElt) ->
7
GrpDrch
8
{The group of Dirichlet characters mod m with image in the order-r cyclic
9
subgroup of R generated by the root of unity z.}
10
//...
11
12
modify the require statement like this:
13
14
if not (Type(R) in {FldLoc, FldPr}) then
15
require z^r eq R!1 : "Argument 3 must have order equal to argument 4.";
16
17
end if;
18
19
Now you can happily create characters of giagantic degree, and you don't
20
have to bother with cyclotomic polynomials.
21
22
2) In dims.m, replace DimensionCuspForms by the following:
23
24
intrinsic DimensionCuspForms(eps::GrpDrchElt, k::RngIntElt) -> RngElt
25
{Compute the dimension of the space of cusp forms of weight k and
26
character eps.}
27
require Characteristic(BaseRing(eps)) eq 0 :
28
"The base ring of argument 1 must be of characteristic 0.";
29
requirege k,2;
30
N := Modulus(eps);
31
if IsTrivial(eps) then
32
return S0(N,k);
33
end if;
34
if (IsOdd(eps) and IsEven(k)) or (IsEven(eps) and IsOdd(k)) then
35
return 0;
36
end if;
37
ans := idxG0(N) * (k-1)/12 + CohenOesterle(eps,k);
38
if Type(ans) in {FldRatElt, FldCycElt} then
39
return Integers()!ans;
40
end if;
41
return ans;
42
end intrinsic;
43