QuaternionOrder: AlgAssVOrd Default:
Given a cuspidal space M of Hilbert modular forms of level N, and an ideal I dividing N, this constructs the subspace of M consisting of forms that are new at the ideal I (or that are new at N, if I is not given). More precisely, this is the complement of the space generated by all images under degeneracy maps of spaces of level N/P for primes P dividing I. In the current implementation, I must be squarefree and coprime to N/I.The NewSubspace of M is not necessarily represented as an explicit subspace of M: doing so is not always possible, or may not be optimal. (These choices are internal: the difference is not visible in the output.) In many cases new subspace is obtained as an explicit subspace by computing degeneracy maps. In other case it is computed independently of M, using a quaternion order which is chosen automatically. When the optional argument QuaternionOrder is specified, this will always be used (overriding other considerations). The allowable orders are similar to those for full cuspidal spaces (see HilbertCuspForms above), with the difference that here the quaternion algebra is allowed to be ramified at finite primes dividing I. When the algebra is indefinite, the finite primes where it is ramified must be precisely those dividing I.
In the non-parallel weight case, work may be saved by setting the optional argument RationalBasis to false. This defers the computation of a "rational basis" of the new space (this is explained below). By default, a rational basis is computed for NewSubspace(M), and (equivalently) NewSubspace(M) where I equals Level(M). If it is defered, one may later set a "rational basis" for the new space using SetRationalBasis.
This is a procedure which changes the basis of M. A full explanation is given in the first part of Section Operators.If the basis of M is already known to be a "rational basis", then nothing is done; the basis of M is not modified. In particular, this has no effect on spaces of parallel weight 2.
After this has been invoked, the basis of M is never modified again.
> _<x> := PolynomialRing(Rationals()); > F := NumberField(x^2-10); > OF := Integers(F); > primes := [tup[1] : tup in Factorization(3*OF)]; > #primes; 2 > M1 := HilbertCuspForms(F, 1*OF); > Dimension(M1); 2 > M3 := HilbertCuspForms(F, primes[1]); > Dimension(M3); 4Hence M3 must contain only oldforms (since there are two degeneracy maps M1 to M3, whose images must be linearly independent). We verify this now.
> Dimension(NewSubspace(M3)); 0Next we consider level (3).
> M9 := HilbertCuspForms(F, 3*OF); > Dimension(M9); 18 > Dimension(NewSubspace(M9)); 10The remaining dimension 8 all comes from level 1 (via the four images of M1).
> Dimension(NewSubspace(M9, primes[1])); 10 > Dimension(NewSubspace(M9, primes[2])); 10The dimensions indicate that the four degeneracy maps M1 to M9 have independent images.
> _<x> := PolynomialRing(Rationals()); > _<zeta7> := CyclotomicField(7); > F<a> := NumberField(MinimalPolynomial(zeta7 + 1/zeta7)); > F; Number Field with defining polynomial x^3 + x^2 - 2*x - 1 over the Rational FieldWe consider forms of level 3 (which generates a prime ideal in F).
> M := HilbertCuspForms(F, 3*Integers(F)); > M; Cuspidal space of Hilbert modular forms over Number Field with defining polynomial x^3 + x^2 - 2*x - 1 over the Rational Field Level = Ideal of norm 27 generated by ( [3, 0, 0] ) Weight = [ 2, 2, 2 ] > Mnew := NewSubspace(M); > Dimension(M); 1 > Dimension(Mnew); 1So in fact M equals its new subspace, and consists of just one newform. However, different algorithms have been chosen to compute them, as indicated below. (Algorithm I is chosen automatically for the new subspace because it is much faster. It cannot be used for the full space, since over an odd degree field there is no quaternion algebra ramified at precisely the infinite places.)
> IsDefinite(M); false > IsDefinite(Mnew); trueWe now compute some eigenvalues of the newform generating the space, using both algorithms. (The computations for Mnew are entirely independent from those for M.)
> primes := PrimesUpTo(20,F); > [Norm(P) : P in primes]; [ 7, 8, 13, 13, 13 ] > time for P in primes do HeckeOperator(Mnew,P); end for; [-5] [-4] [1] [1] [1] Time: 0.810 > time HeckeOperator(M, primes[1]); [-5] Time: 38.800