Package sage :: Package modular :: Package hecke :: Module ambient_module :: Class AmbientHeckeModule
[hide private]
[frames] | no frames]

Class AmbientHeckeModule

source code

                         object --+                                
                                  |                                
   structure.sage_object.SageObject --+                            
                                      |                            
                structure.parent.Parent --+                        
                                          |                        
       structure.parent_base.ParentWithBase --+                    
                                              |                    
           structure.parent_gens.ParentWithGens --+                
                                                  |                
structure.parent_gens.ParentWithAdditiveAbelianGens --+            
                                                      |            
                                  modules.module.Module --+        
                                                          |        
                                 module.HeckeModule_generic --+    
                                                              |    
                                 module.HeckeModule_free_module --+
                                                                  |
                                                                 AmbientHeckeModule
Known Subclasses:
modform.ambient.ModularFormsAmbient, modsym.ambient.ModularSymbolsAmbient


Ambient Hecke module.



Instance Methods [hide private]
 
__add__(self, other) source code
 
__call__(self, x)
File: sage/modules/module.pyx (starting at line 26) Coerce x into the ring.
source code
 
__init__(self, base_ring, rank, level, weight) source code
 
_degeneracy_lowering_matrix(self, N, t)
Matrix of the degeneracy map of index t to level N, where N is a divisor of the level.
source code
 
_degeneracy_raising_matrix(self, N)
Matrix of the degeneracy map (with t = 1) to level N, where N is a multiple of the level.
source code
 
_hecke_image_of_ith_basis_element(self, n, i)
Return the image under the Hecke operator T_n of the i-th basis element.
source code
 
_repr_(self) source code
 
_set_dual_free_module(self, V) source code
 
_submodule_class(self) source code
 
ambient_hecke_module(self) source code
 
complement(self)
Return the largest Hecke-stable complement of this space.
source code
 
decomposition_matrix(self)
Returns the matrix whose columns form a basis for the canonical sorted decomposition of self coming from the Hecke operators.
source code
 
decomposition_matrix_inverse(self)
Returns the inverse of the matrix returned by decomposition_matrix().
source code
 
degeneracy_map(self, level, t=1)
The t-th degeneracy map from self to the corresponding Hecke module of the given level.
source code
 
dual_free_module(self) source code
 
fcp(self, n, var='x')
Returns the factorization of the characteristic polynomial of the Hecke operator $T_n$ of index $n$.
source code
 
free_module(self)
Return the free module underlying this ambient Hecke module.
source code
 
hecke_bound(self)
Return an integer B such that the Hecke operators $T_n$, for $n\leq B$, generate the full Hecke algebra as a module over the base ring.
source code
 
hecke_module_of_level(self, level) source code
 
intersection(self, other)
Returns the intersection of self and other, which must both lie in a common ambient space of modular symbols.
source code
 
is_ambient(self)
Returns True if and only if self is an ambient Hecke module.
source code
 
is_full_hecke_module(self, compute=True)
Returns True if this space is invariant under the action of all Hecke operators, even those that divide the level.
source code
 
is_new(self, p=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...) source code
 
is_old(self, p=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...) source code
 
is_submodule(self, V)
Returns True if and only if self is a submodule of V.
source code
 
linear_combination_of_basis(self, v) source code
 
new_submodule(self, p=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...)
Returns the new or p-new submodule of self.
source code
 
nonembedded_free_module(self) source code
 
old_submodule(self, p=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...)
Returns the old or p-old submodule of self.
source code
 
submodule(self, M, Mdual=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a..., check=True)
Return the Hecke submodule of self defined by the free module M.
source code
 
submodule_from_nonembedded_module(self, V, Vdual=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a..., check=True)
INPUT: V -- submodule of ambient free module of the same rank as the rank of self.
source code
 
submodule_generated_by_images(self, M)
Return the submodule of this ambient modular symbols space generated by the images under all degeneracy maps of M.
source code

Inherited from module.HeckeModule_free_module: T, __cmp__, __contains__, __getitem__, __hash__, __len__, ambient, ambient_module, atkin_lehner_operator, basis, decomposition, degree, dual_eigenvector, dual_hecke_matrix, eigenvalue, factor_number, gen, hecke_matrix, hecke_operator, hecke_polynomial, is_simple, is_splittable, is_splittable_anemic, ngens, projection, system_of_eigenvalues, weight, zero_submodule

Inherited from module.HeckeModule_generic: anemic_hecke_algebra, basis_matrix, category, character, dimension, hecke_algebra, is_hecke_invariant, is_zero, level

Inherited from modules.module.Module: __new__, endomorphism_ring, is_atomic_repr

Inherited from structure.parent_gens.ParentWithAdditiveAbelianGens: __iter__, generator_orders

Inherited from structure.parent_gens.ParentWithGens: __getslice__, __getstate__, __setstate__, _is_valid_homomorphism_, gens, gens_dict, hom, inject_variables, injvar, latex_name, latex_variable_names, list, objgen, objgens, variable_name, variable_names

Inherited from structure.parent_base.ParentWithBase: Hom, base, base_extend, base_extend_canonical, base_extend_canonical_sym, base_extend_recursive, base_ring

Inherited from structure.parent.Parent: _coerce_, coerce_map_from, coerce_map_from_impl, construction, get_action, get_action_impl, has_coerce_map_from, has_coerce_map_from_impl, init_coerce

Inherited from structure.sage_object.SageObject: __repr__, _axiom_, _axiom_init_, _gap_, _gap_init_, _gp_, _gp_init_, _interface_, _interface_init_, _interface_is_cached_, _kash_, _kash_init_, _macaulay2_, _macaulay2_init_, _magma_, _magma_init_, _maple_, _maple_init_, _mathematica_, _mathematica_init_, _maxima_, _maxima_init_, _octave_, _octave_init_, _pari_, _pari_init_, _r_init_, _sage_, _singular_, _singular_init_, db, dump, dumps, plot, rename, reset_name, save, version

Inherited from object: __delattr__, __getattribute__, __reduce__, __reduce_ex__, __setattr__, __str__

Properties [hide private]

Inherited from structure.parent.Parent (private): _has_coerce_map_from

Inherited from object: __class__

Method Details [hide private]

__call__(self, x)
(Call operator)

source code 
File: sage/modules/module.pyx (starting at line 26)

Coerce x into the ring.

Overrides: modules.module.Module.__call__
(inherited documentation)

__init__(self, base_ring, rank, level, weight)
(Constructor)

source code 
Overrides: module.HeckeModule_free_module.__init__

complement(self)

source code 

Return the largest Hecke-stable complement of this space.
EXAMPLES:
    sage: M=ModularSymbols(11,2,1)
    sage: M
    Modular Symbols space of dimension 2 for Gamma_0(11) of weight 2 with sign 1 over Rational Field
    sage: M.complement()
    Modular Symbols subspace of dimension 0 of Modular Symbols space of dimension 2 for Gamma_0(11) of weight 2 with sign 1 over Rational Field
    sage: C=M.cuspidal_subspace()
    sage: C
    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
    sage: C.complement()
    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

decomposition_matrix(self)

source code 

Returns the matrix whose columns form a basis for the
canonical sorted decomposition of self coming from the Hecke
operators.

If the simple factors are $D_0, \ldots, D_n$, then the first
few columns are an echelonized basis for $D_0$, the next an
echelonized basis for $D_1$, the next for $D_2$, etc.

degeneracy_map(self, level, t=1)

source code 

The t-th degeneracy map from self to the corresponding Hecke
module of the given level.  The level of self must be a
divisor or multiple of level, and t must be a divisor of the
quotient.

INPUT:
    level -- int, the level of the codomain of the map (positive int).

    t  -- int, the parameter of the degeneracy map, i.e., the map is
          related to $f(q)$ |--> $f(q^t)$.
          
OUTPUT:
    A morphism from self to corresponding the Hecke module of
    given level.
    
EXAMPLES:
    sage: M = ModularSymbols(11,sign=1)
    sage: d1 = M.degeneracy_map(33); d1
    Hecke module morphism degeneracy map corresponding to f(q) |--> f(q) defined by the matrix
    (not printing 2 x 6 matrix)
    Domain: Modular Symbols space of dimension 2 for Gamma_0(11) of weight ...
    Codomain: Modular Symbols space of dimension 6 for Gamma_0(33) of weight ...
    sage: M.degeneracy_map(33,3).matrix()
    [ 3  2  2  0 -2  1]
    [ 0  2  0 -2  0  0]
    sage: M = ModularSymbols(33,sign=1)
    sage: d2 = M.degeneracy_map(11); d2.matrix()
    [  1   0]
    [  0 1/2]
    [  0  -1]
    [  0   1]
    [ -1   0]
    [ -1   0]
    sage: (d2*d1).matrix()
    [4 0]
    [0 4]

    sage: M = ModularSymbols(3,12,sign=1)
    sage: M.degeneracy_map(1)
    Hecke module morphism degeneracy map corresponding to f(q) |--> f(q) defined by the matrix
    [1 0]
    [0 0]
    [0 1]
    [0 1]
    [0 1]
    Domain: Modular Symbols space of dimension 5 for Gamma_0(3) of weight ...
    Codomain: Modular Symbols space of dimension 2 for Gamma_0(1) of weight ...

    sage: S = M.cuspidal_submodule()
    sage: S.degeneracy_map(1)
    Hecke module morphism defined by the matrix
    [1 0]
    [0 0]
    [0 0]
    Domain: Modular Symbols subspace of dimension 3 of Modular Symbols space ...
    Codomain: Modular Symbols space of dimension 2 for Gamma_0(1) of weight ...

    sage: D = ModularSymbols(10,4).cuspidal_submodule().decomposition()
    sage: D
    [
    Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 10 for Gamma_0(10) of weight 4 with sign 0 over Rational Field,
    Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 10 for Gamma_0(10) of weight 4 with sign 0 over Rational Field
    ]
    sage: D[1].degeneracy_map(5)
    Hecke module morphism defined by the matrix
    [   0    0   -1    1]
    [   0  1/2  3/2   -2]
    [   0   -1    1    0]
    [   0 -3/4 -1/4    1]
    Domain: Modular Symbols subspace of dimension 4 of Modular Symbols space ...
    Codomain: Modular Symbols space of dimension 4 for Gamma_0(5) of weight ...            

fcp(self, n, var='x')

source code 

Returns the factorization of the characteristic polynomial of
the Hecke operator $T_n$ of index $n$.

INPUT:
   ModularSymbols self -- space of modular symbols invariant
                           under the Hecke operator of index n.
   int n -- a positive integer.
   var -- variable of polynomiall
   
OUTPUT:
   list -- list of the pairs (g,e), where g is an irreducible
           factor of the characteristic polynomial of T_n, and
           e is its multiplicity.
           
EXAMPLES:
    sage: m = ModularSymbols(23, 2, sign=1)
    sage: m.fcp(2)
    (x - 3) * (x^2 + x - 1)
    sage: m.hecke_operator(2).charpoly('x').factor()
    (x - 3) * (x^2 + x - 1)

hecke_bound(self)

source code 

Return an integer B such that the Hecke operators $T_n$, for $n\leq B$,
generate the full Hecke algebra as a module over the base ring.  Note
that we include the $n$ with $n$ not coprime to the level.

intersection(self, other)

source code 

Returns the intersection of self and other, which must both
lie in a common ambient space of modular symbols.

EXAMPLES:
    sage: M = ModularSymbols(43, sign=1)
    sage: A = M[0] + M[1]
    sage: B = M[1] + M[2]
    sage: A.rank(), B.rank()
    (2, 3)
    sage: C = A.intersection(B); C.rank()  # TODO
    1

is_ambient(self)

source code 

Returns True if and only if self is an ambient Hecke module.

WARNING: self can only be ambient by being of type
AmbientHeckeModule.

For example, decomposing a simple ambient space yields a
single factor, and that factor is \emph{not} considered an
ambient space.

EXAMPLES:
    sage: m = ModularSymbols(10)
    sage: m.is_ambient()
    True
    
    sage: a = m[0]  # the unique simple factor
    sage: a == m
    True
    sage: a.is_ambient()
    False

is_full_hecke_module(self, compute=True)

source code 

Returns True if this space is invariant under the action of
all Hecke operators, even those that divide the level.

Overrides: module.HeckeModule_generic.is_full_hecke_module

is_submodule(self, V)

source code 

Returns True if and only if self is a submodule of V.

Overrides: module.HeckeModule_free_module.is_submodule

new_submodule(self, p=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...)

source code 

Returns the new or p-new submodule of self.

INPUT:
    p -- (default: None); if not None, return only the p-new submodule.
    
OUTPUT:
    the new or p-new submodule of self
    
EXAMPLES:
    sage: m = ModularSymbols(33); m.rank()
    9
    sage: m.new_submodule().rank()
    3
    sage: m.new_submodule(3).rank()
    4
    sage: m.new_submodule(11).rank()
    8

old_submodule(self, p=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a...)

source code 

Returns the old or p-old submodule of self.

INPUT:
    p -- (default: None); if not None, return only the p-old submodule.
    
OUTPUT:
    the old or p-old submodule of self
    
EXAMPLES:
    sage: m = ModularSymbols(33); m.rank()
    9
    sage: m.old_submodule().rank()
    7
    sage: m.old_submodule(3).rank()
    6
    sage: m.new_submodule(11).rank()
    8

    sage: e = DirichletGroup(16)([-1, 1])
    sage: M = ModularSymbols(e, 3, sign=1); M
    Modular Symbols space of dimension 4 and level 16, weight 3, character [-1, 1], sign 1, over Rational Field
    sage: M.old_submodule()
    Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 4 and level 16, weight 3, character [-1, 1], sign 1, over Rational Field

submodule(self, M, Mdual=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a..., check=True)

source code 

Return the Hecke submodule of self defined by the free module M.

Overrides: module.HeckeModule_generic.submodule

submodule_from_nonembedded_module(self, V, Vdual=['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1', 'a..., check=True)

source code 

INPUT:
    V -- submodule of ambient free module of the same rank as the
         rank of self.
    Vdual -- used to pass in dual submodule
    check -- whether to check that submodule is Hecke equivariant
    
OUTPUT:
    Hecke submodule of self

submodule_generated_by_images(self, M)

source code 

Return the submodule of this ambient modular symbols space
generated by the images under all degeneracy maps of M.  The
space M must have the same weight, sign, and group or
character as this ambient space.