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
| X, [k=2]) |
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
| X, [k=2]) |
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
| X, [k=2]) |
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
| X, [k=2], [p=0]) |
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