Abelian varieties attached to newforms

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

Bases: ModularAbelianVariety_modsym_abstract

A modular abelian variety attached to a specific newform.

endomorphism_ring()[source]

Return the endomorphism ring of this newform abelian variety.

EXAMPLES:

sage: A = AbelianVariety('23a')
sage: E = A.endomorphism_ring(); E
Endomorphism ring of Newform abelian subvariety 23a of dimension 2 of J0(23)
>>> 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)
A = AbelianVariety('23a')
E = A.endomorphism_ring(); E

We display the matrices of these two basis matrices:

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]
>>> 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]
E.0.matrix()
E.1.matrix()

The result is cached:

sage: E is A.endomorphism_ring()
True
>>> from sage.all import *
>>> E is A.endomorphism_ring()
True
E is A.endomorphism_ring()
factor_number()[source]

Return factor number.

OUTPUT: int

EXAMPLES:

sage: A = AbelianVariety('43b')
sage: A.factor_number()
1
>>> from sage.all import *
>>> A = AbelianVariety('43b')
>>> A.factor_number()
1
A = AbelianVariety('43b')
A.factor_number()
label()[source]

Return canonical label that defines this newform modular abelian variety.

OUTPUT: string

EXAMPLES:

sage: A = AbelianVariety('43b')
sage: A.label()
'43b'
>>> from sage.all import *
>>> A = AbelianVariety('43b')
>>> A.label()
'43b'
A = AbelianVariety('43b')
A.label()
newform(names=None)[source]

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

EXAMPLES:

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
>>> 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
f = Newform('37a')
A = f.abelian_variety()
A.newform()
A.newform() is f

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

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)
>>> 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)
A = AbelianVariety('67b')
A.newform()
A.newform('alpha')

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

sage: A = AbelianVariety('67a')
sage: A.newform()
q + 2*q^2 - 2*q^3 + 2*q^4 + 2*q^5 + O(q^6)
>>> 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)
A = AbelianVariety('67a')
A.newform()