39.4 Dimensions of spaces of modular forms

Module: sage.modular.dims_doc

Dimensions of spaces of modular forms

The dimension formulas and implementations in this module grew out of a program that Bruce Caskel wrote (around 1996) in PARI, which Kevin Buzzard subsequently extended. I (William Stein) then implemented it in C++ for HECKE. I also implemented it in MAGMA. Also, the functions for dimensions of spaces with nontrivial character are based on a paper (that has no proofs) by Cohen and Oesterle (Springer Lecture notes in math, volume 627, pages 69-78).

The formulas here are more complete than in HECKE or MAGMA.

Currently the input to each function below is an integer and either a Dirichlet character or a congruence subgroup, which must be either or . If the input is a Dirichlet character , the dimensions are for subspaces of , where is the modulus of .

Module-level Functions

 dimension_cusp_forms( X, [k=2])
The dimension of the space of cusp forms for the given congruence subgroup or Dirichlet character.

INPUT:
X -- congruence subgroup or Dirichlet character or integer
k -- weight (integer)

sage: dimension_cusp_forms(5,4)
1

sage: dimension_cusp_forms(Gamma0(11),2)
1
sage: dimension_cusp_forms(Gamma1(13),2)
2

sage: dimension_cusp_forms(DirichletGroup(13).0^2,2)
1
sage: dimension_cusp_forms(DirichletGroup(13).0,3)
1

sage: dimension_cusp_forms(Gamma0(11),2)
1
sage: dimension_cusp_forms(Gamma0(11),0)
0
sage: dimension_cusp_forms(Gamma0(1),12)
1
sage: dimension_cusp_forms(Gamma0(1),2)
0
sage: dimension_cusp_forms(Gamma0(1),4)
0

sage: dimension_cusp_forms(Gamma0(389),2)
32
sage: dimension_cusp_forms(Gamma0(389),4)
97
sage: dimension_cusp_forms(Gamma0(2005),2)
199
sage: dimension_cusp_forms(Gamma0(11),1)
0

sage: dimension_cusp_forms(Gamma1(11),2)
1
sage: dimension_cusp_forms(Gamma1(1),12)
1
sage: dimension_cusp_forms(Gamma1(1),2)
0
sage: dimension_cusp_forms(Gamma1(1),4)
0

sage: dimension_cusp_forms(Gamma1(389),2)
6112
sage: dimension_cusp_forms(Gamma1(389),4)
18721
sage: dimension_cusp_forms(Gamma1(2005),2)
159201

sage: dimension_cusp_forms(Gamma1(11),1)
Traceback (most recent call last):
...
NotImplementedError: computation of dimensions of spaces of weight 1
modular forms not implemented in general.

sage: e = DirichletGroup(13).0
sage: e.order()
12
sage: dimension_cusp_forms(e,2)
0
sage: dimension_cusp_forms(e^2,2)
1

 dimension_eis( X, [k=2])
The dimension of the space of eisenstein series for the given congruence subgroup.

INPUT:
X -- congruence subgroup or Dirichlet character or integer
k -- weight (integer)

sage: dimension_eis(5,4)
2

sage: dimension_eis(Gamma0(11),2)
1
sage: dimension_eis(Gamma1(13),2)
11
sage: dimension_eis(Gamma1(2006),2)
3711

sage: e = DirichletGroup(13).0
sage: e.order()
12
sage: dimension_eis(e,2)
0
sage: dimension_eis(e^2,2)
2

sage: e = DirichletGroup(13).0
sage: e.order()
12
sage: dimension_eis(e,2)
0
sage: dimension_eis(e^2,2)
2
sage: dimension_eis(e,13)
2

sage: G = DirichletGroup(20)
sage: dimension_eis(G.0,3)
4
sage: dimension_eis(G.1,3)
6
sage: dimension_eis(G.1^2,2)
6

sage: G = DirichletGroup(200)
sage: e = prod(G.gens(), G(1))
sage: e.conductor()
200
sage: dimension_eis(e,2)
4

sage: dimension_modular_forms(Gamma1(4), 11)
6

 dimension_modular_forms( X, [k=2])
The dimension of the space of cusp forms for the given congruence subgroup (either , , or ) or Dirichlet character.

INPUT:
X -- congruence subgroup or Dirichlet character
k -- weight (integer)

sage: dimension_modular_forms(Gamma0(11),2)
2
sage: dimension_modular_forms(Gamma1(13),2)
13

sage: e = DirichletGroup(20).1
sage: dimension_modular_forms(e,3)
9
sage: dimension_cusp_forms(e,3)
3
sage: dimension_eis(e,3)
6
sage: dimension_modular_forms(11,2)
2

 dimension_new_cusp_forms( X, [k=2], [p=0])
Return the dimension of the new (or p-new) subspace of cusp forms for the character or group X.

INPUT:
X -- integer, congruence subgroup or Dirichlet character
k -- weight (integer)
p -- 0 or a prime

sage: dimension_new_cusp_forms(100,2)
1

sage: dimension_new_cusp_forms(Gamma0(100),2)
1
sage: dimension_new_cusp_forms(Gamma0(100),4)
5

sage: dimension_new_cusp_forms(Gamma1(100),2)
141
sage: dimension_new_cusp_forms(Gamma1(100),4)
463

sage: dimension_new_cusp_forms(DirichletGroup(100).1^2,2)
2
sage: dimension_new_cusp_forms(DirichletGroup(100).1^2,4)
8

sage: sum(dimension_new_cusp_forms(e,3) for e in DirichletGroup(30))
12
sage: dimension_new_cusp_forms(Gamma1(30),3)
12