This computes the dimension of the space M of Hilbert modular forms.
The dimension is determined either by using "dimension formulae"
or else by explicitly constructing the space. By default, formulae
are used when available and when considered cheap to evaluate.
The optional argument UseFormula can be set true or
false to override the default.
Dimension formulae are implemented for spaces of parallel weight 2.
These formulae are sums over certain cyclotomic extensions of the
base field of F.
The results by formula are guaranteed only under GRH, since they
may involve class numbers that are calculated conditionally.
If at some later point, the space is explicitly computed,
the dimension is will then be verified unconditionally.
We continue with the first example above.
> _<x> := PolynomialRing(Rationals());
> F := NumberField(x^2-85);
> OF := Integers(F);
> H := HilbertCuspForms(F, 1*OF);
> Norm(Level(H));
1
> Weight(H);
[ 2, 2 ]
> time Dimension(H);
6
Time: 2.580
> IsDefinite(H);
true
This indicates that Algorithm I (described in the introduction) was used
to compute the dimension.
> level := Factorization(3*OF)[1][1];
> H3 := HilbertCuspForms(F, level);
> Level(H3);
Prime Ideal of OF
Two element generators:
[3, 0]
[2, 2]
> time Dimension(H3);
14
Time: 2.370
> H3 := HilbertCuspForms(F, level : QuaternionOrder:=QuaternionOrder(H) );
> time Dimension(H3);
14
Time: 0.270
It is much faster when we recycle the same quaternion order used for the space of level 1.
This is because the harder computations involved depend only on the quaternion order,
not on the level.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]