AUTHORS:
Element of a Hecke module.
EXAMPLES:
sage: v = sage.modular.hecke.all.HeckeModuleElement(BrandtModule(37), vector(QQ,[1,2,3])); v
(1, 2, 3)
sage: type(v)
<class 'sage.modular.hecke.element.HeckeModuleElement'>
TESTS:
sage: v = ModularSymbols(37).0
sage: loads(dumps(v))
(1,0)
sage: loads(dumps(v)) == v
True
Use internally to compute vector underlying this element.
EXAMPLES:
sage: f = EllipticCurve('11a').modular_form()
sage: hasattr(f, '_HeckeModuleElement__element')
False
sage: f._compute_element()
(1, 0)
sage: f.element()
(1, 0)
sage: hasattr(f, '_HeckeModuleElement__element')
True
EXAMPLES:
sage: BrandtModule(37)([0,1,-1])._lmul_(3)
(0, 3, -3)
EXAMPLES:
sage: BrandtModule(37)([0,1,-1])._neg_()
(0, -1, 1)
EXAMPLES:
sage: BrandtModule(37)([0,1,-1])._pos_()
(0, 1, -1)
Return string representation of this Hecke module element. The default representation is just the representation of the underlying vector.
EXAMPLES:
sage: BrandtModule(37)([0,1,-1])._repr_()
'(0, 1, -1)'
EXAMPLES:
sage: BrandtModule(37)([0,1,-1])._rmul_(3)
(0, 3, -3)
EXAMPLES:
sage: BrandtModule(37)([0,1,-1])._sub_(BrandtModule(37)([0,1,-5]))
(0, 0, 4)
This makes it so vector(self) and vector(self, R) both work.
EXAMPLES:
sage: v = BrandtModule(37)([0,1,-1]); v
(0, 1, -1)
sage: type(v._vector_())
<type 'sage.modules.vector_rational_dense.Vector_rational_dense'>
sage: type(vector(v))
<type 'sage.modules.vector_integer_dense.Vector_integer_dense'>
sage: type(vector(v, GF(2)))
<type 'sage.modules.vector_modn_dense.Vector_modn_dense'>
Return the ambient Hecke module that contains this element.
EXAMPLES:
sage: BrandtModule(37)([0,1,-1]).ambient_module()
Brandt module of dimension 3 of level 37 of weight 2 over Rational Field
Return underlying vector space element that defines this Hecke module element.
EXAMPLES:
sage: z = BrandtModule(37)([0,1,-1]).element(); z
(0, 1, -1)
sage: type(z)
<type 'sage.modules.vector_rational_dense.Vector_rational_dense'>
Return True if this element is cuspidal.
EXAMPLES:
sage: M = ModularForms(2, 22); M.0.is_cuspidal()
True
sage: (M.0 + M.4).is_cuspidal()
False
sage: EllipticCurve('37a1').newform().is_cuspidal()
True
It works for modular symbols too:
sage: M = ModularSymbols(19,2)
sage: M.0.is_cuspidal()
False
sage: M.1.is_cuspidal()
True
Return True if this element is Eisenstein. This makes sense for both modular forms and modular symbols.
EXAMPLES:
sage: CuspForms(2,8).0.is_eisenstein()
False
sage: M = ModularForms(2,8);(M.0 + M.1).is_eisenstein()
False
sage: M.1.is_eisenstein()
True
sage: ModularSymbols(19,4).0.is_eisenstein()
False
sage: EllipticCurve('37a1').newform().is_eisenstein()
False
Return True if this element is p-new. If p is None, return True if the element is new.
EXAMPLE:
sage: CuspForms(22, 2).0.is_new(2)
False
sage: CuspForms(22, 2).0.is_new(11)
True
sage: CuspForms(22, 2).0.is_new()
False
Return True if this element is p-old. If p is None, return True if the element is old.
EXAMPLE:
sage: CuspForms(22, 2).0.is_old(11)
False
sage: CuspForms(22, 2).0.is_old(2)
True
sage: CuspForms(22, 2).0.is_old()
True
sage: EisensteinForms(144, 2).1.is_old()
False
sage: EisensteinForms(144, 2).1.is_old(2) # not implemented
False
Return True if x is a Hecke module element, i.e., of type HeckeModuleElement.
EXAMPLES:
sage: sage.modular.hecke.all.is_HeckeModuleElement(0)
False
sage: sage.modular.hecke.all.is_HeckeModuleElement(BrandtModule(37)([1,2,3]))
True