Elements of Hecke modules - General Hecke Algebras and Hecke Modules

Skip to content
Back to top
View this page
Edit this page

# Elements of Hecke modules

AUTHORS:

- William Stein

class sage.modular.hecke.element.HeckeModuleElement(parent, x=None)

  Bases: `ModuleElement`

  Element of a Hecke module.

  ambient_module()

    Return the ambient Hecke module that contains this element.

    EXAMPLES:

    Sage

        sage: BrandtModule(37)([0,1,-1]).ambient_module()
        Brandt module of dimension 3 of level 37 of weight 2 over Rational Field

    Python

        >>> from sage.all import *
        >>> BrandtModule(Integer(37))([Integer(0),Integer(1),-Integer(1)]).ambient_module()
        Brandt module of dimension 3 of level 37 of weight 2 over Rational Field

  element()

    Return underlying vector space element that defines this Hecke module element.

    EXAMPLES:

    Sage

        sage: z = BrandtModule(37)([0,1,-1]).element(); z
        (0, 1, -1)
        sage: type(z)
        <class 'sage.modules.vector_rational_dense.Vector_rational_dense'>

    Python

        >>> from sage.all import *
        >>> z = BrandtModule(Integer(37))([Integer(0),Integer(1),-Integer(1)]).element(); z
        (0, 1, -1)
        >>> type(z)
        <class 'sage.modules.vector_rational_dense.Vector_rational_dense'>

  is_cuspidal()

    Return `True` if this element is cuspidal.

    EXAMPLES:

    Sage

        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

    Python

        >>> from sage.all import *
        >>> M = ModularForms(Integer(2), Integer(22)); M.gen(0).is_cuspidal()
        True
        >>> (M.gen(0) + M.gen(4)).is_cuspidal()
        False
        >>> EllipticCurve('37a1').newform().is_cuspidal()
        True

    It works for modular symbols too:

    Sage

        sage: M = ModularSymbols(19,2)
        sage: M.0.is_cuspidal()
        False
        sage: M.1.is_cuspidal()
        True

    [Python]

        >>> from sage.all import *
        >>> M = ModularSymbols(Integer(19),Integer(2))
        >>> M.gen(0).is_cuspidal()
        False
        >>> M.gen(1).is_cuspidal()
        True

  is_eisenstein()

    Return `True` if this element is Eisenstein.

    This makes sense for both modular forms and modular symbols.

    EXAMPLES:

    Sage

        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().element().is_eisenstein()
        False

    Python

        >>> from sage.all import *
        >>> CuspForms(Integer(2),Integer(8)).gen(0).is_eisenstein()
        False
        >>> M = ModularForms(Integer(2),Integer(8));(M.gen(0)  + M.gen(1)).is_eisenstein()
        False
        >>> M.gen(1).is_eisenstein()
        True
        >>> ModularSymbols(Integer(19),Integer(4)).gen(0).is_eisenstein()
        False
        >>> EllipticCurve('37a1').newform().element().is_eisenstein()
        False

  is_new(p=None)

    Return `True` if this element is \(p\)-new.

    If \(p\) is `None`, return `True` if the element is new.

    EXAMPLES:

    Sage

        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

    Python

        >>> from sage.all import *
        >>> CuspForms(Integer(22), Integer(2)).gen(0).is_new(Integer(2))
        False
        >>> CuspForms(Integer(22), Integer(2)).gen(0).is_new(Integer(11))
        True
        >>> CuspForms(Integer(22), Integer(2)).gen(0).is_new()
        False

  is_old(p=None)

    Return `True` if this element is \(p\)-old.

    If \(p\) is `None`, return `True` if the element is old.

    EXAMPLES:

    Sage

        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()  # long time (3s on sage.math, 2011)
        False
        sage: EisensteinForms(144, 2).1.is_old(2) # not implemented
        False

    Python

        >>> from sage.all import *
        >>> CuspForms(Integer(22), Integer(2)).gen(0).is_old(Integer(11))
        False
        >>> CuspForms(Integer(22), Integer(2)).gen(0).is_old(Integer(2))
        True
        >>> CuspForms(Integer(22), Integer(2)).gen(0).is_old()
        True
        >>> EisensteinForms(Integer(144), Integer(2)).gen(1).is_old()  # long time (3s on sage.math, 2011)
        False
        >>> EisensteinForms(Integer(144), Integer(2)).gen(1).is_old(Integer(2)) # not implemented
        False

sage.modular.hecke.element.is_HeckeModuleElement(x)

  Return `True` if x is a Hecke module element, i.e., of type HeckeModuleElement.

  EXAMPLES:

  Sage

      sage: sage.modular.hecke.all.is_HeckeModuleElement(0)
      doctest:warning...
      DeprecationWarning: the function is_HeckeModuleElement is deprecated;
      use 'isinstance(..., HeckeModuleElement)' instead
      See https://github.com/sagemath/sage/issues/37895 for details.
      False
      sage: sage.modular.hecke.all.is_HeckeModuleElement(BrandtModule(37)([1,2,3]))
      True

  Python

      >>> from sage.all import *
      >>> sage.modular.hecke.all.is_HeckeModuleElement(Integer(0))
      doctest:warning...
      DeprecationWarning: the function is_HeckeModuleElement is deprecated;
      use 'isinstance(..., HeckeModuleElement)' instead
      See https://github.com/sagemath/sage/issues/37895 for details.
      False
      >>> sage.modular.hecke.all.is_HeckeModuleElement(BrandtModule(Integer(37))([Integer(1),Integer(2),Integer(3)]))
      True