Used mainly for computing the cuspidal subspace of modular symbols. The space of boundary symbols of sign 0 is isomorphic as a Hecke module to the dual of the space of Eisenstein series, but this does not give a useful method of computing Eisenstein series, since there is no easy way to extract the constant terms.
We represent boundary modular symbols as a sum of Manin symbols of the form
, where
is a cusp for our group
. The group of boundary
modular symbols naturally embeds into a vector space
(see Stein,
section 8.4, or Merel, section 1.4, where this space is called
, for a definition), which is a finite dimensional
vector space of dimension equal to the number of cusps for
. The embedding
takes
to
. We represent the basis vectors by
pairs
with u, v coprime. On
, we have the relations
for all and
for all .
It’s possible for these relations to kill a class, i.e., for a pair
to be 0. For example, when
and
then
is equivalent mod
to
since
and
. But since
is odd,
is also equivalent to
. Thus this symbol is
equivalent to its negative, hence 0 (notice that this wouldn’t be the case in
characteristic 2). This happens for any irregular cusp when the weight is odd;
there are no irregular cusps on
except when
, but there
can be more on
groups. See also prop 2.30 of Stein’s Ph.D. thesis.
In addition, in the case that our space is of sign or
, we
also have the relation
. This relation can
also combine with the above to kill a cusp class - for instance, take (u,v) =
(1,3) for
. Then since the cusp
is
-equivalent to the cusp
, we have that
. Now, on the minus subspace, we also have that
,
which means this class must vanish. Notice that this cannot be used to show
that
or
is 0.
Note
Special care must be taken when working with the images of the cusps 0 and
in
. For all cusps except 0 and
, multiplying the
cusp by -1 corresponds to taking
to
in
. This
means that
is equivalent to
whenever
is
equivalent to
, except in the case of 0 and
. We
have the following conditions for
and
:
Note
For all the spaces of boundary symbols below, no work is done to determine the cusps for G at creation time. Instead, cusps are added as they are discovered in the course of computation. As a result, the rank of a space can change as a computation proceeds.
REFERENCES:
Bases: sage.modular.hecke.module.HeckeModule_generic
Return the Dirichlet character associated to this space of boundary modular symbols.
EXAMPLES:
sage: ModularSymbols(DirichletGroup(7).0, 6).boundary_space().character()
Dirichlet character modulo 7 of conductor 7 mapping 3 |--> zeta6
Return the underlying free module for self.
EXAMPLES:
sage: B = ModularSymbols(Gamma1(7), 5, sign=-1).boundary_space()
sage: B.free_module()
Sparse vector space of dimension 0 over Rational Field
sage: x = B(Cusp(0)) ; y = B(Cusp(1/7)) ; B.free_module()
Sparse vector space of dimension 2 over Rational Field
Return the i-th generator of this space.
EXAMPLES:
sage: B = ModularSymbols(Gamma0(24), 4).boundary_space()
sage: B.gen(0)
...
ValueError: only 0 generators known for Space of Boundary Modular Symbols for Congruence Subgroup Gamma0(24) of weight 4 and over Rational Field
sage: B(Cusp(1/3))
[1/3]
sage: B.gen(0)
[1/3]
Return the congruence subgroup associated to this space of boundary modular symbols.
EXAMPLES:
sage: ModularSymbols(GammaH(14,[3]), 2).boundary_space().group()
Congruence Subgroup Gamma_H(14) with H generated by [3]
Return True if self is a space of boundary symbols associated to an ambient space of modular symbols.
EXAMPLES:
sage: M = ModularSymbols(Gamma1(6), 4)
sage: M.is_ambient()
True
sage: M.boundary_space().is_ambient()
True
The rank of the space generated by boundary symbols that have been found so far in the course of computing the boundary map.
Warning
This number may change as more elements are coerced into this space!! (This is an implementation detail that will likely change.)
EXAMPLES:
sage: M = ModularSymbols(Gamma0(72), 2) ; B = M.boundary_space()
sage: B.rank()
0
sage: _ = [ B(x) for x in M.basis() ]
sage: B.rank()
16
Return the sign of the complex conjugation involution on this space of boundary modular symbols.
EXAMPLES:
sage: ModularSymbols(13,2,sign=-1).boundary_space().sign()
-1
Return the weight of this space of boundary modular symbols.
EXAMPLES:
sage: ModularSymbols(Gamma1(9), 5).boundary_space().weight()
5
Bases: sage.modular.hecke.element.HeckeModuleElement
Return self as a vector on the QQ-vector space with basis self.parent()._known_cusps().
EXAMPLES:
sage: B = ModularSymbols(18,4,sign=1).boundary_space()
sage: x = B(Cusp(1/2)) ; x
[1/2]
sage: x.coordinate_vector()
(1)
sage: ((18/5)*x).coordinate_vector()
(18/5)
sage: B(Cusp(0))
[0]
sage: x.coordinate_vector()
(1)
sage: x = B(Cusp(1/2)) ; x
[1/2]
sage: x.coordinate_vector()
(1, 0)