Modular Abelian Varieties

The quotient of the extended upper half plane \(\mathfrak{h}^*\) by the congruence subgroup \(\Gamma_1(N)\) is the modular curve \(X_1(N)\). Its Jacobian \(J_1(N)\) is an abelian variety that is canonically defined over \(\QQ\). Likewise, one defines a modular abelian variety \(J_0(N)\) associated to \(\Gamma_0(N)\).

A modular abelian variety is an abelian variety over \(\QQ\) that is a quotient of \(J_1(N)\) for some \(N\).

The biggest recent theorem in number theory is the proof of Serre’s conjecture by Khare and Wintenberger. According to an argument of Ribet and Serre, this implies the following modularity theorem, which generalizes the modularity theorem that Taylor-Wiles proved in the course of proving Fermat’s Last Theorem.

One of my long-term research goals is to develop a systematic theory for computing with modular abelian varieties. A good start is the observation using the Abel-Jacobi theorem that every modular abelian variety (up to isomorphism) can be specified by giving a lattice in a space of modular symbols.

Computing in Sage

We define some modular abelian varieties of level \(39\), and compute some basic invariants.

sage: D = J0(39).decomposition(); D
[
Simple abelian subvariety 39a(1,39) of dimension 1 of J0(39),
Simple abelian subvariety 39b(1,39) of dimension 2 of J0(39)
]
sage: D[1].lattice()
Free module of degree 6 and rank 4 over Integer Ring
Echelon basis matrix:
[ 1  0  0  1 -1  0]
[ 0  1  1  0 -1  0]
[ 0  0  2  0 -1  0]
[ 0  0  0  0  0  1]
sage: G = D[1].rational_torsion_subgroup(); G
Torsion subgroup of Simple abelian subvariety 39b(1,39)
of dimension 2 of J0(39)
sage: G.order()
28
sage: G.gens()
[[(1/14, 2/7, 0, 1/14, -3/14, 1/7)], [(0, 1, 0, 0, -1/2, 0)],
 [(0, 0, 1, 0, -1/2, 0)]]
sage: B, phi = D[1]/G
sage: B
Abelian variety factor of dimension 2 of J0(39)
sage: phi.kernel()
(Finite subgroup with invariants [2, 14] ...
>>> from sage.all import *
>>> D = J0(Integer(39)).decomposition(); D
[
Simple abelian subvariety 39a(1,39) of dimension 1 of J0(39),
Simple abelian subvariety 39b(1,39) of dimension 2 of J0(39)
]
>>> D[Integer(1)].lattice()
Free module of degree 6 and rank 4 over Integer Ring
Echelon basis matrix:
[ 1  0  0  1 -1  0]
[ 0  1  1  0 -1  0]
[ 0  0  2  0 -1  0]
[ 0  0  0  0  0  1]
>>> G = D[Integer(1)].rational_torsion_subgroup(); G
Torsion subgroup of Simple abelian subvariety 39b(1,39)
of dimension 2 of J0(39)
>>> G.order()
28
>>> G.gens()
[[(1/14, 2/7, 0, 1/14, -3/14, 1/7)], [(0, 1, 0, 0, -1/2, 0)],
 [(0, 0, 1, 0, -1/2, 0)]]
>>> B, phi = D[Integer(1)]/G
>>> B
Abelian variety factor of dimension 2 of J0(39)
>>> phi.kernel()
(Finite subgroup with invariants [2, 14] ...

Endomorphisms

There is an algorithm in Sage for computing the exact endomorphism ring of any modular abelian variety.

sage: A = J0(91)[2]; A
Simple abelian subvariety 91c(1,91) of dimension 2 of J0(91)
sage: R = End(A); R
Endomorphism ring of Simple abelian subvariety 91c(1,91)
of dimension 2 of J0(91)
sage: for x in R.gens():
....:     print(x.matrix())
....:     print("")
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]

[ 0  4 -2  0]
[-1  5 -2  1]
[-1  2  0  2]
[-1  1  0  3]
>>> from sage.all import *
>>> A = J0(Integer(91))[Integer(2)]; A
Simple abelian subvariety 91c(1,91) of dimension 2 of J0(91)
>>> R = End(A); R
Endomorphism ring of Simple abelian subvariety 91c(1,91)
of dimension 2 of J0(91)
>>> for x in R.gens():
...     print(x.matrix())
...     print("")
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
<BLANKLINE>
[ 0  4 -2  0]
[-1  5 -2  1]
[-1  2  0  2]
[-1  1  0  3]

It is also possible to test isomorphism of two modular abelian varieties. But much exciting theoretical and computational work remains to be done.