Abelian varieties attached to newforms - Modular Abelian Varieties

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

# Abelian varieties attached to newforms

class sage.modular.abvar.abvar_newform.ModularAbelianVariety_newform(f, internal_name=False)

  Bases: `ModularAbelianVariety_modsym_abstract`

  A modular abelian variety attached to a specific newform.

  endomorphism_ring()

    Return the endomorphism ring of this newform abelian variety.

    EXAMPLES:

    Sage

        sage: A = AbelianVariety('23a')
        sage: E = A.endomorphism_ring(); E
        Endomorphism ring of Newform abelian subvariety 23a of dimension 2 of J0(23)

    Python

        >>> from sage.all import *
        >>> A = AbelianVariety('23a')
        >>> E = A.endomorphism_ring(); E
        Endomorphism ring of Newform abelian subvariety 23a of dimension 2 of J0(23)

    We display the matrices of these two basis matrices:

    Sage

        sage: E.0.matrix()
        [1 0 0 0]
        [0 1 0 0]
        [0 0 1 0]
        [0 0 0 1]
        sage: E.1.matrix()
        [ 0  1 -1  0]
        [ 0  1 -1  1]
        [-1  2 -2  1]
        [-1  1  0 -1]

    [Python]

        >>> from sage.all import *
        >>> E.gen(0).matrix()
        [1 0 0 0]
        [0 1 0 0]
        [0 0 1 0]
        [0 0 0 1]
        >>> E.gen(1).matrix()
        [ 0  1 -1  0]
        [ 0  1 -1  1]
        [-1  2 -2  1]
        [-1  1  0 -1]

    The result is cached:

    Sage

        sage: E is A.endomorphism_ring()
        True

    Python

        >>> from sage.all import *
        >>> E is A.endomorphism_ring()
        True

  factor_number()

    Return factor number.

    OUTPUT: int

    EXAMPLES:

    Sage

        sage: A = AbelianVariety('43b')
        sage: A.factor_number()
        1

    Python

        >>> from sage.all import *
        >>> A = AbelianVariety('43b')
        >>> A.factor_number()
        1

  label()

    Return canonical label that defines this newform modular abelian variety.

    OUTPUT: string

    EXAMPLES:

    Sage

        sage: A = AbelianVariety('43b')
        sage: A.label()
        '43b'

    Python

        >>> from sage.all import *
        >>> A = AbelianVariety('43b')
        >>> A.label()
        '43b'

  newform(names=None)

    Return the newform that this modular abelian variety is attached to.

    EXAMPLES:

    Sage

        sage: f = Newform('37a')
        sage: A = f.abelian_variety()
        sage: A.newform()
        q - 2*q^2 - 3*q^3 + 2*q^4 - 2*q^5 + O(q^6)
        sage: A.newform() is f
        True

    Python

        >>> from sage.all import *
        >>> f = Newform('37a')
        >>> A = f.abelian_variety()
        >>> A.newform()
        q - 2*q^2 - 3*q^3 + 2*q^4 - 2*q^5 + O(q^6)
        >>> A.newform() is f
        True

    If the a variable name has not been specified, we must specify one:

    Sage

        sage: A = AbelianVariety('67b')
        sage: A.newform()
        Traceback (most recent call last):
        ...
        TypeError: You must specify the name of the generator.
        sage: A.newform('alpha')
        q + alpha*q^2 + (-alpha - 3)*q^3 + (-3*alpha - 3)*q^4 - 3*q^5 + O(q^6)

    [Python]

        >>> from sage.all import *
        >>> A = AbelianVariety('67b')
        >>> A.newform()
        Traceback (most recent call last):
        ...
        TypeError: You must specify the name of the generator.
        >>> A.newform('alpha')
        q + alpha*q^2 + (-alpha - 3)*q^3 + (-3*alpha - 3)*q^4 - 3*q^5 + O(q^6)

    If the eigenform is actually over \(\QQ\) then we don’t have to specify the name:

    Sage

        sage: A = AbelianVariety('67a')
        sage: A.newform()
        q + 2*q^2 - 2*q^3 + 2*q^4 + 2*q^5 + O(q^6)

    Python

        >>> from sage.all import *
        >>> A = AbelianVariety('67a')
        >>> A.newform()
        q + 2*q^2 - 2*q^3 + 2*q^4 + 2*q^5 + O(q^6)