The following functions compute the cuspidal, Eisenstein, and new subspaces, along with the complement of a subspace.
The cuspidal subspace of the space of modular symbols M. This is the kernel of BoundaryMap(M).
Returns true if and only if the space of modular symbols M is contained in the cuspidal subspace of the ambient space.
The Eisenstein subspace of the space of modular symbols M. This is the complement in M of the cuspidal subspace of M.
Returns true if and only if the space of modular symbols M is contained in the Eisenstein subspace of the ambient space.
The new subspace of the space of modular symbols M. This is the intersection of NewSubspace(M,p) as p varies over all prime divisors of the level of M. Note that M is required to be cuspidal.
Returns true if and only if the space of modular symbols M is contained in the new cuspidal subspace of the ambient space.
The p-new subspace of the space of modular symbols M. This is the kernel of the degeneracy map from M to the space of modular symbols of level equal to the level of M divided by p and character the restriction of the character of M. If the character of M does not restrict, then NewSubspace(M,p) is equal to M. Note that M is required to be cuspidal.
The kernel of I on the space of modular symbols M. Let Tp denote the pth Hecke operator (see Section Hecke and Atkin-Lehner Operators). This is the subspace of M obtained by intersecting the kernels of the operators fn(Tpn), where I is a sequence [< p1, f1(x) >, ..., < pn, fn(x) >] of pairs consisting of a prime number and a polynomial. Only primes pi which do not divide the level of M are used.
The space of modular symbols complementary to the space of modular symbols M in the ambient space of M. Thus the ambient space of M is equal to the direct sum of M and Complement(M).
A matrix that represents the boundary map from the space of modular symbols M to the vector space whose basis consists of the weight k cusps. (Note: At present there is no intrinsic that lists these cusps.)
> M := ModularSymbols(11,2); M; Full modular symbols space for Gamma_0(11) of weight 2 and dimension 3 over Rational Field > IsCuspidal(M); false > C := CuspidalSubspace(M); C; Modular symbols space for Gamma_0(11) of weight 2 and dimension 2 over Rational Field > IsCuspidal(C); trueNext we compute the Eisenstein subspace.
> IsEisenstein(C); false > E := EisensteinSubspace(M); E; Modular symbols space for Gamma_0(11) of weight 2 and dimension 1 over Rational Field > IsEisenstein(E); true > E + C eq M; trueThe Eisenstein subspace is the complement of the cuspidal subspace, and conversely.
> E eq Complement(C); true > C eq Complement(E); true
> M := ModularSymbols("37B"); M; Modular symbols space for Gamma_0(37) of weight 2 and dimension 2 over Rational Field > BoundaryMap(M); [0 0] [0 0] > A := AmbientSpace(M); > BoundaryMap(A); [ 0 0] [ 0 0] [ 0 0] [ 0 0] [ 1 -1]Observe that the Eisenstein subspace of A is not in the kernel of the boundary map.
> Basis(VectorSpace(EisensteinSubspace(A))); [ (0 0 0 1 3) ]