[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Creation Functions

Subsections

Ambient Spaces

ModularForms (N) : RngIntElt -> ModFrm
The space M_2(Gamma_0(N), Z) of modular forms on Gamma_0(N) of weight 2. See the documentation for ModularForms(N,k) below, with k=2.
ModularForms(N, k) : RngIntElt, RngIntElt -> ModFrm
The space M_k(Gamma_0(N), Z) of weight k modular forms on Gamma_0(N) over Z.
ModularForms(chars, k) : [GrpDrchElt], RngIntElt -> ModFrm
The space M_k( chars), which is the direct sum of the spaces M_k(Gamma_1(N))(e) as e runs over all characters Galois-conjugate to some character in chars.
ModularForms(G) : -> ModFrm
This is the same as ModularForms(G,2) (see below).
ModularForms(G, k) : -> ModFrm
The space M_k(G, Z), where G is a congruence subgroup. The groups Gamma_0(N) and Gamma_1(N) are currently supported, and can be created using the commands Gamma0(N) and Gamma1(N), respectively.

Example ModForm_Creation-Space (H90E3)

In this example, we illustrate each of the above constructors in turn. First we create M_2(Gamma_0(65)).

> M := ModularForms(65); M;
Space of modular forms on Gamma_0(65) of weight 2 and dimension 8 over
Integer Ring.
> Dimension(M);
8
> Basis(CuspidalSubspace(M));
[
    q + q^5 + 2*q^6 + q^7 + O(q^8),
    q^2 + 2*q^5 + 3*q^6 + 2*q^7 + O(q^8),
    q^3 + 2*q^5 + 2*q^6 + 2*q^7 + O(q^8),
    q^4 + 2*q^5 + 3*q^6 + 3*q^7 + O(q^8),
    3*q^5 + 5*q^6 + 2*q^7 + O(q^8)
]
Next we create M_4(Gamma_0(8)).

> M := ModularForms(8,4); M;
Space of modular forms on Gamma_0(8) of weight 4 and dimension 5 over 
Integer Ring.
> Dimension(M);
5
> Basis(CuspidalSubspace(M));
[
    q - 4*q^3 - 2*q^5 + 24*q^7 + O(q^8)
]

Now we create the space M_3(N, eps), where eps is a character of level 20, conductor 5 and order 4.

> G := DirichletGroup(20,CyclotomicField(EulerPhi(20)));
> chars := Elements(G); #chars;
8
> [Conductor(eps) : eps in chars];
[ 1, 4, 5, 20, 5, 20, 5, 20 ]
> eps := chars[3];
> IsEven(eps);          
false
> M := ModularForms([eps],3); M;
Space of modular forms on Gamma_1(20) with character all conjugates of
[$.2], weight 3, and dimension 12 over Integer Ring.
> Dimension(EisensteinSubspace(M));
6
> Dimension(CuspidalSubspace(M));
6
Next we create the direct sum of the spaces M_k(20, eps) as eps varies over the four mod 20 characters of order at most 2, for k=2 and 3.

> G := DirichletGroup(20, RationalField());   // (Z/20Z)^* --> Q^*
> chars := Elements(G); #chars;
4
> M := ModularForms(chars,2); M;
Space of modular forms on Gamma_1(20) with characters all conjugates 
of [1, $.1, $.2, $.1*$.2], weight 2, and dimension 6 over Integer 
Ring.
> M := ModularForms(chars,3); M;
Space of modular forms on Gamma_1(20) with characters all conjugates 
of [1, $.1, $.2, $.1*$.2], weight 3, and dimension 14 over Integer 
Ring.
Now we create the spaces M_k(Gamma_1(20)) for k=2, 3.

> M := ModularForms(Gamma1(20)); M;   
Space of modular forms on Gamma_1(20) of weight 2 and dimension 22 
over Integer Ring.
> M := ModularForms(Gamma1(20),3); M;
Space of modular forms on Gamma_1(20) of weight 3 and dimension 34 
over Integer Ring.

Base Extension

If M is a space of modular symbols created using one of the constructors in Section Ambient Spaces, then the base ring of M is Z. Thus we can base extend M to any ring R. The examples below illustrate some simple applications of BaseExtend.

BaseExtend(M, R) : ModFrm, Rng -> ModFrm, Map
The base extension of the space M of modular forms to the ring R and the induced map from M to BaseExtend(M,R). The only requirement on R is that there is a natural coercion map from the base ring of M to R. For example, when BaseRing(M) is the integers, any ring R is allowed.
BaseExtend(M, phi) : ModFrm, Map -> ModFrm, Map
The base extension of the space M of modular forms to the ring R using the map phi : BaseRing(M) -> R, and the induced map from M to BaseExtend(M,R)

Example ModForm_BaseExtend (H90E4)

We first illustrate an Eisenstein series in M_(12)(1) that is congruent to 1 modulo 3.

> M<q> := EisensteinSubspace(ModularForms(1,12));
> E12 := M.1; E12 + O(q^4);
691 + 65520*q + 134250480*q^2 + 11606736960*q^3 + O(q^4)
> M3<q3> := BaseExtend(M,GF(3));
> Dimension(M3);
1
> M3.1+O(q3^20);
1 + O(q3^20)
This congruence can be proved by noting that the coefficient of q^n in the q-expansion of E_(12)/65520, for any n >= 1, is an eigenvalue of a Hecke operator, hence an integer, and that 65520 is divisible by 3. Because E_(12) is defined over Z the command "E12Q/65520" would result in an error, so we first base extend to Q.

> MQ, phi := BaseExtend(M,RationalField());
> E12Q := phi(E12);   
> E12Q/65520;
691/65520 + q + 2049*q^2 + 177148*q^3 + 4196353*q^4 + 48828126*q^5 + 
362976252*q^6 + 1977326744*q^7 + O(q^8)

It is possible to base extend to almost any silly commutative ring.

> M := ModularForms(11,2);
> R := PolynomialRing(GF(17),3);
> MR<q> := BaseExtend(M,R); MR;
Space of modular forms on Gamma_0(11) of weight 2 and dimension 2 over
Polynomial ring of rank 3 over GF(17)
Lexicographical Order
Variables: $.1, $.2, $.3.
> f := MR.1;  f + O(q^5);
1 + 12*q^2 + 12*q^3 + 12*q^4 + O(q^5)
> f*(R.1+3*R.2) + O(q^4);
$.1 + 3*$.2 + (12*$.1 + 2*$.2)*q^2 + (12*$.1 + 2*$.2)*q^3 + O(q^4)

Elements

M . i : ModFrm, RngIntElt -> ModFrmElt
The ith basis vector of M.
M ! f : ModFrm, . -> ModFrmElt
The coercion of f into M. Here f can be a modular form, a power series with absolute precision, or something that can be coerced into RSpace(M).
ModularForm(E) : CrvEll -> ModFrm
The modular form associated to the elliptic curve E over Q. (See Section Elliptic Curves.)

Example ModForm_CreationElements (H90E5)

> M := ModularForms(Gamma0(11),2);
> M.1;
1 + 12*q^2 + 12*q^3 + 12*q^4 + 12*q^5 + 24*q^6 + 24*q^7 + O(q^8)
> M.2;
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
> R<q> := PowerSeriesRing(Integers());
> f := M!(1 + q + 10*q^2 + O(q^3));
> f;
1 + q + 10*q^2 + 11*q^3 + 14*q^4 + 13*q^5 + 26*q^6 + 22*q^7 + O(q^8)
> Eltseq(f);
[ 1, 1 ]
Eltseq gives f as a linear combination of M.1 and M.2. Next we coerce f into M_2(Gamma_0(22)).

> M22 := ModularForms(Gamma0(22),2);
> g := M22!f; g;
1 + q + 10*q^2 + 11*q^3 + 14*q^4 + 13*q^5 + 26*q^6 + 22*q^7 + O(q^8)
> Eltseq(g);
[ 1, 1, 10, 11, 14 ]
The elliptic curve E below defines an element of M_2(Gamma_0(11)).

> E := EllipticCurve([ 0, -1, 1, -10, -20 ]);
> Conductor(E);
11
> f := ModularForm(E);
> f;
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
> f + M.1;
1 + q + 10*q^2 + 11*q^3 + 14*q^4 + 13*q^5 + 26*q^6 + 22*q^7 + O(q^8)
Note, however, that the ambient space of the parent of f is not equal to M, despite the fact that both are isomorphic to M_2(Gamma_0(11)). This is because they were created independently. The above operations are defined because there is a canonical way to coerce f into M using its q-expansion.

> f in M;
false
> AmbientSpace(Parent(f)) eq M;
false

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]