Consider an ambient space M_1 of modular symbols of level N_1, and suppose M_2 is an ambient space of modular symbols of level a multiple N_2 of N_1 whose weight equals the weight of M_1 and whose character is induced by the character of M_1. Then for each divisor d of N_2/N_1 there are natural maps alpha_d:M_1 -> M_2 and beta_d:M_2 -> M_1 such that beta_d o alpha_d is multiplication by d^(k - 2).[Gamma_0(N_1) : Gamma_0(N_2)], where k is the common weight of M_1 and M_2. On cuspidal parts, the map beta_d is dual to the map f(q) -> f(q^d) on modular forms. Use the function DegeneracyMap to compute the maps alpha_d and beta_d.
Given a space M of modular symbols and a positive integer N that is a multiple of the level of M, the images of M under the degeneracy maps generate a modular symbols space of level N. The constructor ModularSymbols(M,N) computes this space.
Let M be a space of modular symbols of level N, and let N' be a multiple of N. The subspace sum_(d | (N'/N)) alpha_d(M) subset Mm_k(N', varepsilon) is stable under the Hecke operators. Here is how to create this subspace using Magma:
> M := ModularSymbols(11,2); M; Full Modular symbols space of level 11, weight 2, and dimension 3 > M33 := ModularSymbols(M,33); M33; Modular symbols space of level 33, weight 2, and dimension 6
The degeneracy map M_1 -> M_2 associated to d. Let N_i be the level of M_i for i=1, 2. Suppose that d is a divisor of either the numerator or denominator of the rational number N_1/N_2, written in reduced form. If N_1 | N_2, then this intrinsic returns alpha_d:M_1 -> M_2, or if N_2 | N_1, then this intrinsic returns beta_d:M_1 -> M_2. It is an error if neither divisibility holds.
The matrix of DegeneracyMap(M1,M2,d) with respect to Basis(M1) and Basis(M2). Both IsAmbient(M1) and IsAmbient(M2) must be true.
The modular symbols space of level N' associated to M. Let N be the level of M. If N | N', then this intrinsic returns the modular symbols space sum_(d | (N'/()N)) alpha_d(M). If N' | N, then this intrinsic returns the modular symbols space sum_(d | (N/()N')) beta_d(M). In this latter case, if Conductor(DirichletCharacter(M)) does not divide N', then the 0 space is returned.
The modular symbols subspace of M_1 associated to M_2. Let N_1 be the level of M_1. If ModularSymbols(M2,N1) is defined, let M_3 be this modular symbols space, otherwise terminate with an error. If M_3 is contained in M_1, return M_3, otherwise terminate with an error.
> M15 := ModularSymbols(15);
> M30 := ModularSymbols(30);
> alp_2 := DegeneracyMap(M15,M30,2);
> alp_2(M15.1);
2*{oo, 0} + -1*{-1/28, 0} + -1*{-1/2, -7/15}
> beta_2 := DegeneracyMap(M30,M15,2);
> beta_2(alp_2(M15.1));
3*{oo, 0}
> M15.1;
{oo, 0}
We can consider the space generated by the image of a space of modular symbols of level 11 in spaces of higher level.
> X11 := ModularSymbols("11k2A");
> qEigenform(X11,6);
q - 2*q^2 - q^3 + 2*q^4 + q^5 + O(q^6)
> ModularSymbols(X11,33);
Modular symbols space of level 33, weight 2, and dimension 4
> X33 := ModularSymbols(X11,33);
> qExpansionBasis(X33,6);
[
q - 2*q^2 + 2*q^4 + q^5 + O(q^6),
q^3 + O(q^6)
]
> Factorization(CharacteristicPolynomial(HeckeOperator(X33,3)));
[
<x^2 + x + 3, 2>
]
> ModularDegree(X33);
3
We can also construct the space generated by the images
of X11 at higher level using the !! operator.
> M44 := ModularSymbols(44,2); > A := M44!!X11; A; Modular symbols space of level 44, weight 2, and dimension 6 > X11!!A; // back to the original space Modular symbols space of level 11, weight 2, and dimension 2