Subspace of ambient spaces of modular symbols¶
- class sage.modular.modsym.subspace.ModularSymbolsSubspace(ambient_hecke_module, submodule, dual_free_module=None, check=False)[source]¶
Bases:
ModularSymbolsSpace
,HeckeSubmodule
Subspace of ambient space of modular symbols
- boundary_map()[source]¶
The boundary map to the corresponding space of boundary modular symbols. (This is the restriction of the map on the ambient space.)
EXAMPLES:
sage: M = ModularSymbols(1, 24, sign=1) ; M Modular Symbols space of dimension 3 for Gamma_0(1) of weight 24 with sign 1 over Rational Field sage: M.basis() ([X^18*Y^4,(0,0)], [X^20*Y^2,(0,0)], [X^22,(0,0)]) sage: M.cuspidal_submodule().basis() ([X^18*Y^4,(0,0)], [X^20*Y^2,(0,0)]) sage: M.eisenstein_submodule().basis() ([X^18*Y^4,(0,0)] + 166747/324330*[X^20*Y^2,(0,0)] + 236364091/6742820700*[X^22,(0,0)],) sage: M.boundary_map() Hecke module morphism boundary map defined by the matrix [ 0] [ 0] [-1] Domain: Modular Symbols space of dimension 3 for Gamma_0(1) of weight ... Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ... sage: M.cuspidal_subspace().boundary_map() Hecke module morphism defined by the matrix [0] [0] Domain: Modular Symbols subspace of dimension 2 of Modular Symbols space ... Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ... sage: M.eisenstein_submodule().boundary_map() Hecke module morphism defined by the matrix [-236364091/6742820700] Domain: Modular Symbols subspace of dimension 1 of Modular Symbols space ... Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ...
>>> from sage.all import * >>> M = ModularSymbols(Integer(1), Integer(24), sign=Integer(1)) ; M Modular Symbols space of dimension 3 for Gamma_0(1) of weight 24 with sign 1 over Rational Field >>> M.basis() ([X^18*Y^4,(0,0)], [X^20*Y^2,(0,0)], [X^22,(0,0)]) >>> M.cuspidal_submodule().basis() ([X^18*Y^4,(0,0)], [X^20*Y^2,(0,0)]) >>> M.eisenstein_submodule().basis() ([X^18*Y^4,(0,0)] + 166747/324330*[X^20*Y^2,(0,0)] + 236364091/6742820700*[X^22,(0,0)],) >>> M.boundary_map() Hecke module morphism boundary map defined by the matrix [ 0] [ 0] [-1] Domain: Modular Symbols space of dimension 3 for Gamma_0(1) of weight ... Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ... >>> M.cuspidal_subspace().boundary_map() Hecke module morphism defined by the matrix [0] [0] Domain: Modular Symbols subspace of dimension 2 of Modular Symbols space ... Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ... >>> M.eisenstein_submodule().boundary_map() Hecke module morphism defined by the matrix [-236364091/6742820700] Domain: Modular Symbols subspace of dimension 1 of Modular Symbols space ... Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ...
- cuspidal_submodule()[source]¶
Return the cuspidal subspace of this subspace of modular symbols.
EXAMPLES:
sage: S = ModularSymbols(42,4).cuspidal_submodule() ; S Modular Symbols subspace of dimension 40 of Modular Symbols space of dimension 48 for Gamma_0(42) of weight 4 with sign 0 over Rational Field sage: S.is_cuspidal() True sage: S.cuspidal_submodule() Modular Symbols subspace of dimension 40 of Modular Symbols space of dimension 48 for Gamma_0(42) of weight 4 with sign 0 over Rational Field
>>> from sage.all import * >>> S = ModularSymbols(Integer(42),Integer(4)).cuspidal_submodule() ; S Modular Symbols subspace of dimension 40 of Modular Symbols space of dimension 48 for Gamma_0(42) of weight 4 with sign 0 over Rational Field >>> S.is_cuspidal() True >>> S.cuspidal_submodule() Modular Symbols subspace of dimension 40 of Modular Symbols space of dimension 48 for Gamma_0(42) of weight 4 with sign 0 over Rational Field
The cuspidal submodule of the cuspidal submodule is just itself:
sage: S.cuspidal_submodule() is S True sage: S.cuspidal_submodule() == S True
>>> from sage.all import * >>> S.cuspidal_submodule() is S True >>> S.cuspidal_submodule() == S True
An example where we abuse the _set_is_cuspidal function:
sage: M = ModularSymbols(389) sage: S = M.eisenstein_submodule() sage: S._set_is_cuspidal(True) sage: S.cuspidal_submodule() Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 65 for Gamma_0(389) of weight 2 with sign 0 over Rational Field
>>> from sage.all import * >>> M = ModularSymbols(Integer(389)) >>> S = M.eisenstein_submodule() >>> S._set_is_cuspidal(True) >>> S.cuspidal_submodule() Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 65 for Gamma_0(389) of weight 2 with sign 0 over Rational Field
- dual_star_involution_matrix()[source]¶
Return the matrix of the dual star involution.
This involution is induced by complex conjugation on the linear dual of modular symbols.
EXAMPLES:
sage: S = ModularSymbols(6,4) ; S.dual_star_involution_matrix() [ 1 0 0 0 0 0] [ 0 1 0 0 0 0] [ 0 -2 1 2 0 0] [ 0 2 0 -1 0 0] [ 0 -2 0 2 1 0] [ 0 2 0 -2 0 1] sage: S.star_involution().matrix().transpose() == S.dual_star_involution_matrix() True
>>> from sage.all import * >>> S = ModularSymbols(Integer(6),Integer(4)) ; S.dual_star_involution_matrix() [ 1 0 0 0 0 0] [ 0 1 0 0 0 0] [ 0 -2 1 2 0 0] [ 0 2 0 -1 0 0] [ 0 -2 0 2 1 0] [ 0 2 0 -2 0 1] >>> S.star_involution().matrix().transpose() == S.dual_star_involution_matrix() True
- eisenstein_subspace()[source]¶
Return the Eisenstein subspace of this space of modular symbols.
EXAMPLES:
sage: ModularSymbols(24,4).eisenstein_subspace() Modular Symbols subspace of dimension 8 of Modular Symbols space of dimension 24 for Gamma_0(24) of weight 4 with sign 0 over Rational Field sage: ModularSymbols(20,2).cuspidal_subspace().eisenstein_subspace() Modular Symbols subspace of dimension 0 of Modular Symbols space of dimension 7 for Gamma_0(20) of weight 2 with sign 0 over Rational Field
>>> from sage.all import * >>> ModularSymbols(Integer(24),Integer(4)).eisenstein_subspace() Modular Symbols subspace of dimension 8 of Modular Symbols space of dimension 24 for Gamma_0(24) of weight 4 with sign 0 over Rational Field >>> ModularSymbols(Integer(20),Integer(2)).cuspidal_subspace().eisenstein_subspace() Modular Symbols subspace of dimension 0 of Modular Symbols space of dimension 7 for Gamma_0(20) of weight 2 with sign 0 over Rational Field
- factorization()[source]¶
Return a list of pairs \((S,e)\) where \(S\) is simple spaces of modular symbols and
self
is isomorphic to the direct sum of the \(S^e\) as a module over the anemic Hecke algebra adjoin the star involution.The cuspidal \(S\) are all simple, but the Eisenstein factors need not be simple.
The factors are sorted by dimension - don’t depend on much more for now.
ASSUMPTION:
self
is a module over the anemic Hecke algebra.EXAMPLES: Note that if the sign is 1 then the cuspidal factors occur twice, one with each star eigenvalue.
sage: M = ModularSymbols(11) sage: D = M.factorization(); D (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field) * (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field) * (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field) sage: [A.T(2).matrix() for A, _ in D] [[-2], [3], [-2]] sage: [A.star_eigenvalues() for A, _ in D] [[-1], [1], [1]]
>>> from sage.all import * >>> M = ModularSymbols(Integer(11)) >>> D = M.factorization(); D (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field) * (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field) * (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field) >>> [A.T(Integer(2)).matrix() for A, _ in D] [[-2], [3], [-2]] >>> [A.star_eigenvalues() for A, _ in D] [[-1], [1], [1]]
In this example there is one old factor squared.
sage: M = ModularSymbols(22,sign=1) sage: S = M.cuspidal_submodule() sage: S.factorization() (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(11) of weight 2 with sign 1 over Rational Field)^2
>>> from sage.all import * >>> M = ModularSymbols(Integer(22),sign=Integer(1)) >>> S = M.cuspidal_submodule() >>> S.factorization() (Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(11) of weight 2 with sign 1 over Rational Field)^2
sage: M = ModularSymbols(Gamma0(22), 2, sign=1) sage: M1 = M.decomposition()[1] sage: M1.factorization() Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 5 for Gamma_0(22) of weight 2 with sign 1 over Rational Field
>>> from sage.all import * >>> M = ModularSymbols(Gamma0(Integer(22)), Integer(2), sign=Integer(1)) >>> M1 = M.decomposition()[Integer(1)] >>> M1.factorization() Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 5 for Gamma_0(22) of weight 2 with sign 1 over Rational Field
- is_cuspidal()[source]¶
Return
True
ifself
is cuspidal.EXAMPLES:
sage: ModularSymbols(42,4).cuspidal_submodule().is_cuspidal() True sage: ModularSymbols(12,6).eisenstein_submodule().is_cuspidal() False
>>> from sage.all import * >>> ModularSymbols(Integer(42),Integer(4)).cuspidal_submodule().is_cuspidal() True >>> ModularSymbols(Integer(12),Integer(6)).eisenstein_submodule().is_cuspidal() False
- is_eisenstein()[source]¶
Return
True
ifself
is an Eisenstein subspace.EXAMPLES:
sage: ModularSymbols(22,6).cuspidal_submodule().is_eisenstein() False sage: ModularSymbols(22,6).eisenstein_submodule().is_eisenstein() True
>>> from sage.all import * >>> ModularSymbols(Integer(22),Integer(6)).cuspidal_submodule().is_eisenstein() False >>> ModularSymbols(Integer(22),Integer(6)).eisenstein_submodule().is_eisenstein() True
- star_involution()[source]¶
Return the star involution on self, which is induced by complex conjugation on modular symbols.
EXAMPLES:
sage: M = ModularSymbols(1,24) sage: M.star_involution() Hecke module morphism Star involution on Modular Symbols space of dimension 5 for Gamma_0(1) of weight 24 with sign 0 over Rational Field defined by the matrix [ 1 0 0 0 0] [ 0 -1 0 0 0] [ 0 0 1 0 0] [ 0 0 0 -1 0] [ 0 0 0 0 1] Domain: Modular Symbols space of dimension 5 for Gamma_0(1) of weight ... Codomain: Modular Symbols space of dimension 5 for Gamma_0(1) of weight ... sage: M.cuspidal_subspace().star_involution() Hecke module morphism defined by the matrix [ 1 0 0 0] [ 0 -1 0 0] [ 0 0 1 0] [ 0 0 0 -1] Domain: Modular Symbols subspace of dimension 4 of Modular Symbols space ... Codomain: Modular Symbols subspace of dimension 4 of Modular Symbols space ... sage: M.plus_submodule().star_involution() Hecke module morphism defined by the matrix [1 0 0] [0 1 0] [0 0 1] Domain: Modular Symbols subspace of dimension 3 of Modular Symbols space ... Codomain: Modular Symbols subspace of dimension 3 of Modular Symbols space ... sage: M.minus_submodule().star_involution() Hecke module morphism defined by the matrix [-1 0] [ 0 -1] Domain: Modular Symbols subspace of dimension 2 of Modular Symbols space ... Codomain: Modular Symbols subspace of dimension 2 of Modular Symbols space ...
>>> from sage.all import * >>> M = ModularSymbols(Integer(1),Integer(24)) >>> M.star_involution() Hecke module morphism Star involution on Modular Symbols space of dimension 5 for Gamma_0(1) of weight 24 with sign 0 over Rational Field defined by the matrix [ 1 0 0 0 0] [ 0 -1 0 0 0] [ 0 0 1 0 0] [ 0 0 0 -1 0] [ 0 0 0 0 1] Domain: Modular Symbols space of dimension 5 for Gamma_0(1) of weight ... Codomain: Modular Symbols space of dimension 5 for Gamma_0(1) of weight ... >>> M.cuspidal_subspace().star_involution() Hecke module morphism defined by the matrix [ 1 0 0 0] [ 0 -1 0 0] [ 0 0 1 0] [ 0 0 0 -1] Domain: Modular Symbols subspace of dimension 4 of Modular Symbols space ... Codomain: Modular Symbols subspace of dimension 4 of Modular Symbols space ... >>> M.plus_submodule().star_involution() Hecke module morphism defined by the matrix [1 0 0] [0 1 0] [0 0 1] Domain: Modular Symbols subspace of dimension 3 of Modular Symbols space ... Codomain: Modular Symbols subspace of dimension 3 of Modular Symbols space ... >>> M.minus_submodule().star_involution() Hecke module morphism defined by the matrix [-1 0] [ 0 -1] Domain: Modular Symbols subspace of dimension 2 of Modular Symbols space ... Codomain: Modular Symbols subspace of dimension 2 of Modular Symbols space ...