Creation and Basic Functions

The functions described below create modular abelian varieties, combine them together in various ways, and obtain simple information about them.

Modular abelian varieties are much less restricted than spaces of modular symbols as one can take arbitrary finite direct sums.

Contents

Creating the Modular Jacobian J0(N)

The JZero command will create the Jacobian J0(N) of the modular curve X0(N) (which parameterizes isomorphism classes of pairs of elliptic curves and cyclic subgroups of order N). Higher weight motivic analogues of this Jacobian can be created. Computations can be carried out in the +1 or -1 quotient of homology for efficiency, though certain results will be off by factors of 2.

JZero(N : parameters) : RngIntElt -> ModAbVar
JZero(N, k : parameters) : RngIntElt, RngIntElt -> ModAbVar
    Sign: RngIntElt                     Default: 0
Create the modular abelian variety J0(N) of level N and weight 2 or weight k≥2, i.e., the Jacobian of the modular curve X0(N). The parameter Sign determines whether computations will be carried out in the +1 or -1 quotient of homology.

Example ModAbVar_Modabvar-Creating_the_Modular_Jacobian_$J_0(N)$ (H145E3)

> JZero(23);
Modular abelian variety JZero(23) of dimension 2 and level 23 over Q
> JZero(23 : Sign := +1);
Modular abelian variety JZero(23) of dimension 2 and level 23 over Q
with sign 1
> JZero(23,4);
Modular motive JZero(23,4) of dimension 5 and level 23 over Q
> JZero(23,4 : Sign := -1);
Modular motive JZero(23,4) of dimension 5 and level 23 over Q with
sign -1
> JZero(389,2 : Sign := +1);
Modular abelian variety JZero(389) of dimension 32 and level 389
over Q with sign 1

Creating the Modular Jacobians J1(N) and JH(N)

The JOne command creates the Jacobian of the modular curve X1(N) (which parameterizes isomorphism classes of pairs of elliptic curves and cyclic subgroups of order N). The command Js creates an abelian variety isogenous to J1(N); more precisely it is the product of abelian varieties Jeps(N), where Jeps(N) is the abelian variety attached to all modular forms whose character is a Galois conjugate of eps. Creating Js(N) is much faster than creating J1(N), since less time is spent finding the integral structure on homology.

The JH command creates the Jacobian JH(N) of the curve XH(N), which is the quotient of X1(N) by the subgroup H of the integers modulo N.

JOne(N : parameters) : RngIntElt -> ModAbVar
JOne(N, k : parameters) : RngIntElt, RngIntElt -> ModAbVar
    Sign: RngIntElt                     Default: 0
Create the modular abelian variety J1(N) of level N and weight k, if given, or 2, i.e., the Jacobian of the modular curve X1(N). Note that creating and finding the integral structure on Js(N), which is isogenous to J1(N), is much faster. Computing with J1(N) may be expensive.
Js(N : parameters) : RngIntElt -> ModAbVar
Js(N, k : parameters) : RngIntElt, RngIntElt -> ModAbVar
    Sign: RngIntElt                     Default: 0
A modular abelian variety that is Q-isogenous to the weight k (or 2) version of J1(N). More precisely, the direct sum of the modular abelian varieties attached to modular symbols spaces with Nebentypus.
JH(N, d : parameters) : RngIntElt, RngIntElt -> ModAbVar
JH(N, k, d : parameters) : RngIntElt, RngIntElt, RngIntElt -> ModAbVar
    Sign: RngIntElt                     Default: 0
Suppose H is some (cyclic) subgroup of G=(Z /NZ ) * such that G/H has order d. Create the modular abelian variety JH(N) of level N and weight k (or 2 if k not given), where JH(N) is isogenous to the Jacobian of the modular curve XH(N) associated to the subgroup of SL 2(Z ) of matrices [a, b;c, d] with c divisible by N and a in H modulo N. It is the product of modular symbols varieties J(ε ) for all Dirichlet characters ε that are trivial on H.

The parameter Sign determines whether computations will be carried out in the +1 or -1 quotient of homology.

JH(N, gens : parameters) : RngIntElt, [RngIntElt] -> ModAbVar
JH(N, k, gens : parameters) : RngIntElt, RngIntElt, [RngIntElt] -> ModAbVar
    Sign: RngIntElt                     Default: 0
Let H be the subgroup of (Z /NZ ) * generated by the sequence of integers, gens. Create the modular abelian variety JH(N) of level N and weight k (or 2 if k not given), where JH(N) is isogenous to the Jacobian of the modular curve XH(N) associated to the subgroup of SL 2(Z ) of matrices [a, b;c, d] with c divisible by N and a in H modulo N. It is the product of modular symbols variety J(ε ) for all Dirichlet characters ε that are trivial on H.

The parameter Sign determines whether computations will be carried out in the +1 or -1 quotient of homology.

Example ModAbVar_Modabvar-Creating_the_Modular_Jacobians_$J_1(N)$_and_$J_H(N)$ (H145E4)

> JOne(13);
Modular abelian variety JOne(13) of dimension 2 and level 13 over Q
> JOne(13,4);
Modular motive JOne(13,4) of dimension 15 and level 13 over Q
> JOne(13,4 : Sign := 1);
Modular motive JOne(13,4) of dimension 15 and level 13 over Q
> JH(13,6);
Modular abelian variety J_H(13) of dimension 2 and level 13 over Q
> JH(13,3);
Modular abelian variety J_H(13) of dimension 0 and level 13 over Q
> JH(13,[-1]);
Modular abelian variety J_H(13) of dimension 2 and level 13 over Q
> JOne(17);
Modular abelian variety JOne(17) of dimension 5 and level 17 over Q
> Js(17);
Modular abelian variety Js(17) of dimension 5 and level 17 over Q
> IsIsogenous(JOne(17),Js(17));
true
> Degree(NaturalMap(JOne(17),Js(17)));
16
> JH(17,2);
Modular abelian variety J_H(17) of dimension 1 and level 17 over Q
> JH(17,4);
Modular abelian variety J_H(17) of dimension 1 and level 17 over Q
> JH(17,8);
Modular abelian variety J_H(17) of dimension 5 and level 17 over Q

Abelian Varieties Attached to Modular Forms

The following commands create abelian varieties attached to spaces of modular forms, sequences of spaces of forms, newforms, and characters. If an input space of modular forms is not cuspidal, Magma automatically replaces it with its cuspidal subspace.

ModularAbelianVariety(M : parameters) : ModFrm -> ModAbVar
    Sign: RngIntElt                     Default: 0
The abelian variety attached to the modular forms space M.
ModularAbelianVariety(X : parameters) : [ModFrm] -> ModAbVar
    Sign: RngIntElt                     Default: 0
The abelian variety attached to the sequence X of modular forms spaces. This is the direct sum of the spaces attached to each element of the sequence.
ModularAbelianVariety(eps : parameters) : GrpDrchElt -> ModAbVar
ModularAbelianVariety(eps, k : parameters) : GrpDrchElt, RngIntElt -> ModAbVar
    Sign: RngIntElt                     Default: 0
The abelian variety associated to the dirichlet character ε . This corresponds to the space of modular forms of weight k and character any Galois conjugate of ε . We include all Galois conjugates in order to obtain an abelian variety that is defined over Q .
ModularAbelianVariety(f) : ModFrmElt -> ModAbVar
The abelian variety attached to the newform f.
Newform(A) : ModAbVar -> ModFrmElt
A newform f such that the modular abelian variety A is isogenous to the newform abelian variety Af. An error occurs if A is not attached to a newform.

Example ModAbVar_Modabvar-Abelian_Varieties_Attached_to_Modular_Forms (H145E5)

We first create the modular abelian variety attached to the spaces S20(11)) and S21(13)). This is the direct sum of J0(11) with J1(13).

> X := [ModularForms(11,2), ModularForms(Gamma1(13),2)];
> A := ModularAbelianVariety(X); A;
Modular abelian variety of dimension 3 and level 11*13 over Q
> IsIsomorphic(A, JZero(11)*JOne(13));
true Homomorphism N(1) from modular abelian variety of dimension
3 to JZero(11) x JOne(13) (not printing 6x6 matrix)
Next we create the modular abelian variety A attached to S21(17)) along with J1(17) and Js(17). We then note that A is isomorphic to J1(17), but there is no reason that A should be isomorphic to Js(17) (they are probably only isogenous). This example illustrates the fact that the abelian variety computed by Magma attached to S21(17)) is J1(17) rather than Js(17). (Recall that Js(N) is a product of copies of abelian varieties corresponding to conjugacy classes of characters.)
> A := ModularAbelianVariety(ModularForms(Gamma1(17),2)); A;
Modular abelian variety of dimension 5 and level 17 over Q
> B := JOne(17); B;
Modular abelian variety JOne(17) of dimension 5 and level 17 over Q
> C := Js(17); C;
Modular abelian variety Js(17) of dimension 5 and level 17 over Q
> IsIsomorphic(A,B);
true Homomorphism from modular abelian variety of dimension 5 to
JOne(17) (not printing 10x10 matrix)
> Degree(NaturalMap(A,C));
16

Example ModAbVar_Modabvar-Abelian_Varieties_Attached_to_Modular_Forms3 (H145E6)

If eps is a Dirichlet character and k≥2 is an integer, let S be the space of modular forms with weight k and character a Galois conjugate of eps. The command ModularAbelianVariety(eps,k) computes the modular abelian variety attached to S.
> G<eps> := DirichletGroup(13,CyclotomicField(12));
> Order(eps^2);
6
> ModularAbelianVariety(eps^2);
Modular abelian variety of dimension 2 and level 13 over Q
> ModularAbelianVariety(eps,3);
Modular motive of dimension 4 and level 13 over Q
Next we compute the modular abelian variety attached to a newform in S21(25)).
> S := CuspForms(Gamma1(25),2);
> N := Newforms(S);
> #N;
2
> f := N[1][1];
> PowerSeries(f,4);
q + a*q^2 + 1/1355*(941*a^7 + 4820*a^6 + 11150*a^5 + 11522*a^4 +
    3582*a^3 + 10041*a^2 + 24432*a - 5718)*q^3 + O(q^4)
> A_f := ModularAbelianVariety(f);
> A_f;
Modular abelian variety Af of dimension 8 and level 5^2 over Q
The abelian variety Af also determines the newform:
> PowerSeries(Newform(A_f),4);
q + a*q^2 + 1/1355*(941*a^7 + 4820*a^6 + 11150*a^5 + 11522*a^4 +
    3582*a^3 + 10041*a^2 + 24432*a - 5718)*q^3 + O(q^4)

Example ModAbVar_Modabvar-Abelian_Varieties_Attached_to_Modular_Forms5 (H145E7)

The Newform command works even if A wasn't explicitly created using a newform.
> A := Decomposition(JZero(37))[1];
> Newform(A);
q - 2*q^2 - 3*q^3 + 2*q^4 - 2*q^5 + 6*q^6 - q^7 + O(q^8)

Abelian Varieties Attached to Modular Symbols

The commands below associate modular abelian varieties to spaces of modular symbols and to sequences of spaces of modular symbols. Conversely, they associate spaces of modular symbols to modular abelian varieties. If an input space of modular symbols is not cuspidal, it is replaced by its cuspidal subspace.

ModularAbelianVariety(M) : ModSym -> ModAbVar
The abelian variety attached to the modular symbols space M.
ModularAbelianVariety(X) : [ModSym] -> ModAbVar
The abelian variety attached to the sequence X of modular symbols spaces.
ModularSymbols(A) : ModAbVar -> SeqEnum
A sequence of spaces of modular symbols associated to the abelian variety A.

Example ModAbVar_Modabvar-Abelian_Varieties_Attached_to_Modular_Symbols (H145E8)

We create modular abelian varieties attached to several spaces of modular symbols.

> M := ModularSymbols(37,2);
> ModularAbelianVariety(M);
Modular abelian variety of dimension 2 and level 37 over Q
> M := ModularSymbols(Gamma1(17));
> ModularAbelianVariety(M);
Modular abelian variety of dimension 5 and level 17 over Q
Note that the sign of the space of modular symbols determines the sign of the corresponding abelian variety.
> M := ModularSymbols(Gamma1(17),2,+1);
> A := ModularAbelianVariety(M); A;
Modular abelian variety of dimension 5 and level 17 over Q with sign 1
We can also create an abelian variety attached to any sequence of modular symbols spaces.
> ModularAbelianVariety([ModularSymbols(11), ModularSymbols(Gamma1(13))]);
Modular abelian variety of dimension 3 and level 11*13 over Q
Conversely, there is a sequence of modular symbols spaces associated to any abelian variety defined over Q. These need not be the same as the spaces used to define the modular abelian variety; instead they are what is used internally in computations on that abelian variety.
> ModularSymbols(JOne(13));
[
    Modular symbols space of level 13, weight 2, character $.1,
    and dimension 2 over Cyclotomic Field of order 6 and degree 2
]
> ModularSymbols(JZero(37));
[
    Modular symbols space for Gamma_0(37) of weight 2 and
    dimension 4 over Rational Field
]
> A := JOne(17);
> ModularSymbols(A);
[
    Modular symbols space for Gamma_0(17) of weight 2 and
    dimension 2 over Rational Field,
    Modular symbols space of level 17, weight 2, character $.1,
    and dimension 2 over Cyclotomic Field of order 8 and degree 4
]

Creation of Abelian Subvarieties

Suppose A is an abelian variety and V is a vector subspace of the rational homology H1(A, Q). Then it can be determined whether or not V is the rational homology of an abelian subvariety of A, and if so that abelian subvariety can be computed.

The other commands below are used to create the zero-dimensional abelian variety.

DefinesAbelianSubvariety(A, V) : ModAbVar, ModTupFld -> BoolElt, ModAbVar
Return true if and only if the subspace V of rational homology defines an abelian subvariety of the variety A. If so, also returns the abelian subvariety.

This intrinsic relies on knowing a complete decomposition of A as a product of simple abelian varieties (so it is currently restricted to abelian varieties for which such a decomposition can be computed in Magma, e.g., modular abelian varieties over Q).

ZeroModularAbelianVariety() : -> ModAbVar
The zero-dimensional abelian variety.
ZeroModularAbelianVariety(k) : RngIntElt -> ModAbVar
The zero-dimensional abelian variety of weight k.
ZeroSubvariety(A) : ModAbVar -> ModAbVar
Returns the zero subvariety of the abelian variety A.

Example ModAbVar_Modabvar-Creation_of_Abelian_Subvarieties (H145E9)

We define two subspaces of the rational homology of J0(33); one defines an abelian subvariety and the other does not.

> A := JZero(33);
> w3 := AtkinLehnerOperator(A,3);
> W := Kernel(Matrix(w3)+1);
> DefinesAbelianSubvariety(A,W);
true Modular abelian variety of dimension 1 and level 3*11 over Q
> V := RationalHomology(A);
> DefinesAbelianSubvariety(A,W + sub<V|[V.1]>);
false

We create several zero-dimensional abelian varieties.

> ZeroModularAbelianVariety();
Modular abelian variety ZERO of dimension 0 and level 1 over Q
> ZeroModularAbelianVariety(2);
Modular abelian variety ZERO of dimension 0 and level 1 over Q
> ZeroSubvariety(JZero(11));
Modular abelian variety ZERO of dimension 0 and level 11 over Q

Creation Using a Label

As a useful shorthand, it is sometimes possible to create modular abelian varieties by giving a short string. If the string contains a single integer N, e.g., 37, then the corresponding abelian variety is J0(N). If it is of the form "<level>k<weight>", then it is the possibly motivic J0(N) of weight k. If it is of the form "<level>k<weight><isogeny code>", where <isogeny code> is one of "A", "B", ... "Z", "AA", "BB", ... "ZZ", "AAA", "BBB", ... then the corresponding abelian variety is JZero(N,k)(iso), where iso is a positive integer, and "A" corresponds to iso=1, "Z" to iso=26, "AA" to iso=27, "ZZ" to iso=52, "AAA" to iso=53, etc.

This labeling convention is the same as the one used for modular symbols, and extends the one used for Cremona's database of elliptic curves, except that Cremona's database contains some random scrambling for levels between 56 and 450. If the weight part of the label is omitted, the weight is assumed to be 2. To get the optimal quotient of J0(N) with Cremona label s, set the optional parameter Cremona equal to true.

ModularAbelianVariety(s : parameters) : MonStgElt -> ModAbVar
    Sign: RngIntElt                     Default: 0
    Cremona: BoolElt                    Default: false
The abelian variety defined by the string s. The parameter Sign determines whether computations will be carried out in the +1 or -1 quotient of homology. If the parameter Cremona is set to true, the optimal quotient of J0(N) with Cremona label s will be returned.

Example ModAbVar_Modabvar-Creation_Using_a_Label (H145E10)

> ModularAbelianVariety("37");
Modular abelian variety 37 of dimension 2 and level 37 over Q
> ModularAbelianVariety("37A");
Modular abelian variety 37A of dimension 1 and level 37 over Q
> ModularAbelianVariety("11k4A");
Modular motive 11k4A of dimension 2 and level 11 over Q
> ModularAbelianVariety("65C");
Modular abelian variety 65C of dimension 2 and level 5*13 over Q
> ModularDegree(ModularAbelianVariety("56A"));
4
> ModularDegree(ModularAbelianVariety("56A" : Cremona := true));
2

Invariants

Commands are available which can retrieve the base ring, dimension, character of the defining modular form, a field of definition, the level, the sign, the weights, and a short name of a modular abelian variety.

BaseRing(A) : ModAbVar -> Rng
The ring that the modular abelian variety A is defined over.
Dimension(A) : ModAbVar -> RngIntElt
The dimension of the modular abelian variety A.
DirichletCharacter(A) : ModAbVar -> GrpDrchElt
If the modular abelian variety A = Af is attached to a newform, returns the Nebentypus character of f. Since f is only well-defined up to Gal (Qbar/Q ) conjugacy, the character is also only well-defined up to Gal (Qbar/Q ) conjugacy.

For information on Dirichlet characters, see Dirichlet Characters.

DirichletCharacters(A) : ModAbVar -> List
List of all Dirichlet characters of spaces of modular symbols associated with the modular symbols abelian variety which parameterizes A.
FieldOfDefinition(A) : ModAbVar -> Fld
The best known field of definition of the modular abelian variety A.
Level(A) : ModAbVar -> RngIntElt
An integer N such that the modular abelian variety A is a quotient of a power of J1(N). Note that N need not be minimal. It is determined by how A is explicitly represented as a quotient of modular Jacobians.
Sign(A) : ModAbVar -> RngIntElt
The sign of the modular abelian variety A, which is either 0, -1, or +1. If the sign is +1 or -1, then only the corresponding complex-conjugation eigenspace of the homology of A is computed, so various computations will be off by a factor of 2.
Weights(A) : ModAbVar -> Set
The set of weights of the modular abelian variety A. The weight need not be unique since direct sums of modular symbols spaces of different weights are allowed.

Example ModAbVar_Modabvar-Invariants (H145E11)

We illustrate all the commands for J0(23).

> A := JZero(23);
> BaseRing(A);
Rational Field
> Dimension(A);
2
> DirichletCharacter(A);
1
> FieldOfDefinition(A);
Rational Field
> Level(A);
23
> Sign(A);
0
> Weights(A);
{ 2 }

Example ModAbVar_Modabvar-Invariants2 (H145E12)

This is an example of a nontrivial Dirichlet character.
> eps := DirichletCharacter(JOne(23)(2)); eps;
$.1^2
> Order(eps);
11

Example ModAbVar_Modabvar-Invariants3 (H145E13)

We illustrate the Weights command in several cases.
> Weights(JZero(11));
{ 2 }
> Weights(JZero(11,4));
{ 4 }
> Weights(JOne(13,3));
{ 3 }
> Weights(DirectSum(JZero(11),JOne(13,3)));
{ 2, 3 }
> Weights(DirectSum(JZero(11),JZero(13,3)));
{ 2 }

Example ModAbVar_Modabvar-Invariants3 (H145E14)

We display a few fields of definition.
> FieldOfDefinition(JOne(13));
Rational Field
> FieldOfDefinition(BaseExtend(JZero(11),QuadraticField(7)));
Rational Field
> FieldOfDefinition(ChangeRing(JZero(11),GF(7)));
Finite field of size 7

Example ModAbVar_Modabvar-Invariants4 (H145E15)

In the following example we quotient J0(11) out by a 5-torsion point. The resulting abelian variety might not be defined over Q, and the FieldOfDefinition command currently plays it safe and returns Qbar.
> A := JZero(11);
> G := nTorsionSubgroup(A,5);
> H := Subgroup([G.1]);
> H;
Finitely generated subgroup of abelian variety with invariants [ 5 ]
> FieldOfDefinition(A/H);
Algebraically closed field with no variables

Conductor

Let A be a modular abelian variety over Q. The conductor command computes the conductor of A by factoring A into newform abelian varieties Af whose conductor is Nd, where N is the level of f and d is the dimension of Af.

Conductor(A) : ModAbVar -> RngIntElt
The conductor of the abelian variety A. We require that A is defined over Q . When A=Af is attached to a newform of level N, then the conductor of A is Nd, where d is the dimension of A.

Example ModAbVar_Modabvar-Conductor (H145E16)

> Factorization(Conductor(JZero(33)));
[ <3, 1>, <11, 3> ]
> Factorization(Conductor(JZero(11)^5));
[ <11, 5> ]
> Factorization(Conductor(OldSubvariety(JZero(46))));
[ <23, 4> ]
> Factorization(Conductor(JOne(25)));
[ <5, 24> ]

Number of Points

Given an abelian variety A over a field K a divisor and a multiple of #A(K) can be computed. When finite, the multiple of the number of rational points is computed using reduction mod primes up to 100. Currently the lower bound is nontrivial only when A is a quotient of J0(N).

NumberOfRationalPoints(A) : ModAbVar -> RngIntElt, RngIntElt
A divisor and a multiple of the cardinality of A(K), where A is a modular abelian variety defined over a field K. If K is an abelian number field, then we assume the Birch and Swinnerton-Dyer conjecture.
#A : ModAbVar -> RngIntElt
The cardinality of A(K) where A is a modular abelian variety defined over the field K if an exact value for this cardinality is known.

Example ModAbVar_Modabvar-Number_of_Points (H145E17)

> #JZero(11);
5
> #JZero(23);
11
> NumberOfRationalPoints(JZero(37));
Infinity Infinity
> NumberOfRationalPoints(JOne(13));
1 19
> NumberOfRationalPoints(JOne(23));
1 408991
> Factorization(408991);
[ <11, 1>, <37181, 1> ]
> NumberOfRationalPoints(ModularAbelianVariety("43B"));
7 7

Inner Twists and Complex Multiplication

If f is a newform then an inner twist of f is a Dirichlet character χ such that the twist of f by χ equals a Galois conjugate of f, at least at Fourier coefficients whose subscript is coprime to some fixed integer. A CM twist is a nontrivial character χ such that f twisted by χ equals f, at least at Fourier coefficients whose subscript is coprime to some fixed integer. The commands below find the CM and inner twists of the newform corresponding to a newform abelian variety.

The optional parameter Proof to each command is by default false. If true, it uses a huge number of terms of q-expansions. If false, it uses far less (and is hence very quick), and in practice this should be fine. The computation of inner and CM twists is not provably correct, even if the Proof := true option is set. It's very likely to be correct when Proof := true, but not provably correct. (More precisely, Magma only checks that each twist is a twist to precision 10 - 5, but does not prove that this precision is sufficient.)

CMTwists(A : parameters) : ModAbVar -> SeqEnum
    Proof: BoolElt                      Default: false
A sequence of the CM inner twist characters of the newform abelian variety A = Af that are defined over the base ring of A. To gain all CM twists, base extend to AlgebraicClosure(RationalField()) first.
InnerTwists(A : parameters) : ModAbVar -> SeqEnum
    Proof: BoolElt                      Default: false
A sequence of the inner twist characters of the newform abelian variety A = Af that are defined over the base ring of A. To gain all inner twists, first base extend to AlgebraicClosure(RationalField()).

Example ModAbVar_Modabvar-Inner_Twists_and_Complex_Multiplication (H145E18)

We compute the inner twists for J1(13).
> A := JOne(13); A;
Modular abelian variety JOne(13) of dimension 2 and level 13 over Q
> CMTwists(A);
[]
> A2 := BaseExtend(A,AlgebraicClosure(RationalField()));
> CMTwists(A2);
[]
> InnerTwists(A2);
[
    1,
    $.1^5
]
> Parent($1[2]);
Group of Dirichlet characters of modulus 13 over Cyclotomic Field
of order 6 and degree 2
We compute the inner twists for the second newform factor of J1(23).
> A := Decomposition(JOne(23))[2]; A;
Modular abelian variety image(23A[2]) of dimension 10, level 23
and conductor 23^10 over Q
> InnerTwists(BaseExtend(A,AlgebraicClosure(RationalField())));
[
    1,
    $.1^20
]
The CM elliptic curve J0(32) has a nontrivial CM inner twist.
> A := JZero(32);
> InnerTwists(BaseExtend(A,AlgebraicClosure(RationalField())));
[
    1,
    $.1
]
> CMTwists(BaseExtend(A,AlgebraicClosure(RationalField())));
[
    $.1
]
Quotients of J0(N) can also have nontrivial inner twists, which are not CM twists.
> J := JZero(81);
> A := Decomposition(J)[1];
> InnerTwists(BaseExtend(A,AlgebraicClosure(RationalField())));
[
    1,
    $.1
]
> CMTwists(BaseExtend(A,AlgebraicClosure(RationalField())));
[]
> Newform(A);
q + a*q^2 + q^4 - a*q^5 + 2*q^7 + O(q^8)

Example ModAbVar_Modabvar-Inner_Twists_and_Complex_Multiplication2 (H145E19)

The following is an example of a 4-dimensional abelian variety A=Af in J0(512) that has four inner twists, none of which are CM twists. One can use this fact to prove that if ap is a prime-indexed Fourier coefficient of f, then ap2∈Z. Thus no single ap generates the degree 4 field generated by all an.
> J := JZero(512, 2, +1);
> A := Decomposition(J)[7]; A;
Modular abelian variety 512G of dimension 4, level 2^9 and
conductor 2^36 over Q with sign 1
> f := Newform(A); f;
q + 1/12*(a^3 - 30*a)*q^3 + 1/12*(-a^3 + 42*a)*q^5 +
     1/6*(-a^2 + 18)*q^7 + O(q^8)
> Coefficient(f,3)^2;
6
> Coefficient(f,5)^2;
12
> Coefficient(f,7)^2;
8
> Abar := BaseExtend(JZero(512,2,+1)(7),AlgebraicClosure(RationalField()));
> InnerTwists(Abar);
[
    1,
    $.1,
    $.2,
    $.1*$.2
]
> CMTwists(Abar);
[]

Predicates

Most of the predicates below work in full generality. The ones whose domain of applicability is somewhat limited are IsIsomorphic, IsQuaternionic, and IsSelfDual. In theory, it is possible to determine isomorphism for more general classes of modular abelian varieties, but this has not yet been implemented.

CanDetermineIsomorphism(A, B) : ModAbVar, ModAbVar -> BoolElt, BoolElt, MapModAbVar
Return true if we can determine whether or not the modular abelian varieties A and B are isomorphic. If we can determine isomorphism, also returns true if A and B are isomorphic and an explicit isomorphism, or false if they are not isomorphic. If we can not determine isomorphism, also returns the reason why we cannot as a string. If A and B are simple and defined over Q , then there is an algorithm to determine whether or not A and B are isomorphic; it has been implemented in most (but not all) cases in Magma. If one of A or B has simple factors of multiplicity one, then in principal it is possible, but the algorithm has not been programmed.
HasMultiplicityOne(A) : ModAbVar -> BoolElt
Return true if the simple factors of the modular abelian variety A appear with multiplicity one.
IsAbelianVariety(A) : ModAbVar -> BoolElt
Return true if A is an abelian variety, i.e., defined over a ring of characteristic 0 in which the conductor is invertible, or a finite field whose characteristic does not divide the conductor of A. For example, if A has positive dimension and is defined over Z , then Raynaud's theorem implies that A is not an abelian variety.
IsAttachedToModularSymbols(A) : ModAbVar -> BoolElt
Return true if the underlying homology of the modular abelian variety A is being computed using a space of modular symbols. For example, this will be true for J0(N) and for newform abelian varieties.
IsAttachedToNewform(A) : ModAbVar -> BoolElt, ModAbVar, MapModAbVar
Return true if the modular abelian variety A is isogenous to a newform abelian variety Af. This intrinsic also returns the abelian variety Af and an explicit isogeny from Af to A.
IsIsogenous(A, B) : ModAbVar, ModAbVar -> BoolElt
Return true if the modular abelian varieties A and B are isogenous. If this can not be determined, an error occurs. It is always possible to determine whether or not A and B are isogenous when both are defined over Q .
IsIsomorphic(A, B) : ModAbVar, ModAbVar -> BoolElt, MapModAbVar
Return true if the modular abelian varieties A and B are isomorphic. If so, also returns an explicit isomorphism. This command will work if A and B are defined over Q and the simple factors occur with multiplicity one, and may work otherwise, but an error may occur in the general case. Use the command CanDetermineIsomorphism to avoid getting an error.
IsOnlyMotivic(A) : ModAbVar -> BoolElt
Return true if any of the modular forms attached to the modular abelian variety A have weight bigger than 2.
IsQuaternionic(A) : ModAbVar -> BoolElt
Return true if and only if some simple factor of the modular abelian variety A over the base ring has quaternionic multiplication.
IsSelfDual(A) : ModAbVar -> BoolElt
Return true if the modular abelian variety A is known to be isomorphic to its dual. An error occurs if Magma is unable to decide.
IsSimple(A) : ModAbVar -> BoolElt
Return true if and only if the modular abelian variety A has no proper abelian subvarieties over BaseRing(A).

Example ModAbVar_Modabvar-Predicates (H145E20)

We test whether a few objects are actually abelian varieties.
> A := JZero(11);
> A11 := ChangeRing(A,GF(11));
> IsAbelianVariety(A11);
false
> AZ := ChangeRing(A,Integers());
> IsAbelianVariety(AZ);
false
> A3 := ChangeRing(A,pAdicRing(3));
> IsAbelianVariety(A3);
true

Example ModAbVar_Modabvar-Predicates2 (H145E21)

A modular motive is sometimes also an abelian variety, but only over the complex numbers.
> A := JZero(11,4); A;
Modular motive JZero(11,4) of dimension 2 and level 11 over Q
> IsAbelianVariety(A);
false
> IsOnlyMotivic(A);
true
> IsAbelianVariety(BaseExtend(A,ComplexField()));
true

Example ModAbVar_Modabvar-Predicates3 (H145E22)

Abelian varieties J0(N) and Js(N) are attached to modular symbols, as are newform abelian varieties.
> J := JZero(37);
> IsAttachedToModularSymbols(J);
true
> A := Decomposition(J)[1];
> IsAttachedToModularSymbols(A);
false
> t, Af := IsAttachedToNewform(A);
> IsAttachedToModularSymbols(Af);
true
> IsIsomorphic(A,Af);
true Homomorphism from 37A to 37A given on integral homology by:
[1 0]
[0 1]
> IsAttachedToModularSymbols(Js(17));
true
> IsAttachedToModularSymbols(JOne(17));
false

Example ModAbVar_Modabvar-Predicates4 (H145E23)

We test isogeny between a few abelian varieties.
> IsIsogenous(JZero(11),JOne(11));
true
> IsIsogenous(JZero(11)*JZero(11),JZero(22));
true
> IsIsogenous(JZero(11)*JZero(11),JZero(33));
false
> IsIsogenous(JZero(11),JZero(14));
false
> IsIsogenous(JZero(11)^2,JZero(22));
true
> A := JZero(37)(2); B := JOne(13);
> IsIsogenous(A*B*A, A*A*B);
true
> A := JZero(43);
> G := RationalCuspidalSubgroup(A);
> IsIsogenous(A,A/G);
true

Next we test isomorphism between some abelian varieties.

> A := JZero(43);
> G := RationalCuspidalSubgroup(A);
> B := A/G;
> CanDetermineIsomorphism(A,B);
true false
> IsIsomorphic(A,B);
false
> IsIsomorphic(JZero(11),JOne(11));
false
> IsIsomorphic(JZero(13),JOne(13));
false
> IsIsomorphic(Js(13),JOne(13));
true Homomorphism from Js(13) to JOne(13) given on integral
homology by:
[ 0  0 -1  0]
[ 0  0  0 -1]
[ 1  0 -1  0]
[ 0  1  0 -1]
> CanDetermineIsomorphism(Js(17),JOne(17));
false All tests failed to decide whether A and B are isomorphic.

Example ModAbVar_Modabvar-Predicates5 (H145E24)

We test whether certain Jacobians have simple factors with multiplicity one.
> HasMultiplicityOne(JZero(43));
true
> HasMultiplicityOne(JZero(33));
false
> Decomposition(JZero(33));
[
    Modular abelian variety 33A of dimension 1, level 3*11 and
    conductor 3*11 over Q,
    Modular abelian variety N(11,33,1)(11A) of dimension 1, level
    3*11 and conductor 11 over Q,
    Modular abelian variety N(11,33,3)(11A) of dimension 1, level
    3*11 and conductor 11 over Q
]

Example ModAbVar_Modabvar-Predicates6 (H145E25)

We give an example of a non-quaternionic surface.
> IsQuaternionic(JOne(13));
false

Example ModAbVar_Modabvar-Predicates7 (H145E26)

Jacobians are self dual, and there is a surface of level 43 that is self dual and a surface of level 69 that is not.
> IsSelfDual(JOne(13));
true
> IsSelfDual(JZero(69)(2));
false

The surface A below is isomorphic to its dual. The natural polarization has kernel that is the kernel of multiplication by 2.

> A  := JZero(43)(2);
> A;
Modular abelian variety 43B of dimension 2, level 43 and
conductor 43^2 over Q
> IsSelfDual(A);
true
> phi := ModularPolarization(A);
> Invariants(Kernel(phi));
[ 2, 2, 2, 2 ]

Example ModAbVar_Modabvar-Predicates8 (H145E27)

We test a few abelian varieties for simplicity.
> IsSimple(JOne(25));
false
> IsSimple(JOne(13));
true
> IsSimple(JZero(11)^10);
false
> IsSimple(NewSubvariety(JZero(100)));
true

Equality and Inclusion Testing

These functions test whether two abelian varieties are exactly equal or if one is a subset of another.

A eq B : ModAbVar, ModAbVar -> BoolElt
Return true if the modular abelian varieties A and B are equal.
A subset B : ModAbVar, ModAbVar -> BoolElt
Return true if the modular abelian variety A is a subset of the modular abelian variety B.

Example ModAbVar_Modabvar-Equality_and_Inclusion_Testing (H145E28)

This example illustrates that taking the direct product of abelian varieties is not commutative, as measured by equality (though it is as measured by isomorphism).
> A := JZero(11);
> B := JZero(14);
> A*B eq A*B;
true
> A*B eq B*A;
false
> IsIsomorphic(A*B, B*A);
true Homomorphism N(1) from JZero(11) x JZero(14) to JZero(14) x JZero(11)
given on integral homology by:
[0 0 1 0]
[0 0 0 1]
[1 0 0 0]
[0 1 0 0]

Example ModAbVar_Modabvar-Equality_and_Inclusion_Testing2 (H145E29)

The first inclusion below is as expected, but the second non-inclusion might be surprising. We do not consider J0(11) as a subset of J0(22), even though there is an injective map from one to the other, since to be a subset is much stronger than just the existence of an inclusion map.
> JZero(37) subset JZero(37);
true
> JZero(11) subset JZero(22);
false
> IsInjective(NaturalMap(JZero(11),JZero(22)));
true

Modular Embedding and Parameterization

Every modular abelian variety A is equipped with a modular parameterization and a modular embedding. The modular parameterization is a surjective homomorphism from a modular symbols abelian variety, such as J0(N). The modular embedding is a homomorphism to a modular symbols abelian variety, which is only guaranteed to be injective in the category of abelian varieties up to isogeny, i.e., to have finite kernel as a morphism of abelian varieties. The structure of these two homomorphisms is extremely important as they completely define A.

CommonModularStructure(X) : [ModAbVar] -> List, List
This intrinsic finds modular abelian varieties Je and Jp associated to modular symbols and returns a list of finite-kernel maps from the abelian varieties in the sequence X to Je and a list of modular parameterizations from Jp to the abelian varieties in X.
ModularEmbedding(A) : ModAbVar -> MapModAbVar
A morphism with finite kernel from the modular abelian variety A to a modular abelian variety attached to modular symbols. This is only guaranteed to be an embedding in the category of abelian varieties up to isogeny.
ModularParameterization(A) : ModAbVar -> MapModAbVar
A surjective morphism to the modular abelian variety A from an abelian variety attached to modular symbols.

Example ModAbVar_Modabvar-Modular_Embedding_and_Parameterization (H145E30)

> X := [JZero(11),ModularAbelianVariety("37B")];
> CommonModularStructure(X);
[*
Homomorphism from JZero(11) to JZero(11) x JZero(37) given on integral
homology by:
[1 0 0 0 0 0]
[0 1 0 0 0 0],
Homomorphism from 37B to JZero(11) x JZero(37) given on integral
homology by:
[0 0 1 1 1 0]
[0 0 0 0 0 1]
*] [*
Homomorphism from JZero(11) x JZero(37) to JZero(11) (not printing 6x2
matrix),
Homomorphism from JZero(11) x JZero(37) to 37B (not printing 6x2
matrix)
*]

Example ModAbVar_Modabvar-Modular_Embedding_and_Parameterization2 (H145E31)

This example illustrates that the modular "embedding" need only be an embedding in the category of abelian varieties up to isogeny.
> A := JZero(37)(1);
> x := A![1/2,1];
> B := A/Subgroup([x]);
> e := ModularEmbedding(B);
> e;
Homomorphism from modular abelian variety of dimension 1 to
JZero(37)_Qbar given on integral homology by:
[ 1 -1  1  0]
[ 2 -2 -2  2]
> IsInjective(e);
false
Moreover, the modular parameterization is surjective, but it need be optimal (have connected kernel).
> pi := ModularParameterization(B);
> IsSurjective(pi);
true
> ComponentGroupOfKernel(pi);
Finitely generated subgroup of abelian variety with invariants [ 2 ]
> IsOptimal(pi);
false

Coercion

Coercion can be used to create points on modular abelian varieties from vectors on a basis of integral homology, from other elements of modular abelian varieties, or from modular symbols. See the examples below, especially the last one, to understand some of the subtleties of coercion that arise because we view an abelian variety as a vector space modulo a lattice, and that lattice can be embedded in any way in Qn.

A ! x : ModAbVar, . -> BoolElt, ModAbVarElt
Coerce x into the modular abelian variety A. The argument x can be an element of a modular abelian variety, the integer 0, a sequence like that obtained by from Eltseq of element of A (i.e., a linear combination of integral homology), a vector on the basis for rational homology, or a tuple of the form < P(X, Y), [u, v] > defining a modular symbol.

Example ModAbVar_Modabvar-Coercion (H145E32)

If you coerce a sequence of rationals or reals into an abelian variety A, then Magma computes the corresponding linear combination of a basis of integral homology and returns the point it defines. The sequence must have length the rank of the integral homology.

> JZero(11)![1/2,1/5];
Element of abelian variety defined by [1/2 1/5] modulo homology
If you coerce exactly two cusps (or extended reals) into A, then Magma computes the point corresponding to that modular symbol.
> JZero(11)![Cusps()|1/2,1/5];
0
> JZero(11)![Sqrt(2),0];
Element of abelian variety defined by
[1.414213562373095048801688724198 0] modulo homology
> JZero(11)![Cusps()|0,Infinity()];     // cusps
Element of abelian variety defined by [0 1/5] modulo homology
> JZero(11)![0,Infinity()];             // extended reals
Element of abelian variety defined by [0 1/5] modulo homology
Coercion of modular symbols also works for higher weight.
> JZero(11,4)![0,Infinity()];
Element of abelian variety defined by [-4/61 5/61 1/61 -1/61]
modulo homology
> R<x,y> := PolynomialRing(RationalField(),2);
> JZero(11,4)!<x^2,[0,Infinity()]>;
Element of abelian variety defined by [-4/61 5/61 1/61 -1/61]
modulo homology
> JZero(11,4)!<y^2,[0,Infinity()]>;
Element of abelian variety defined by [44/61 -55/61 -11/61 11/61]
modulo homology

You can also coerce elements from abelian subvarieties into an ambient abelian variety.

> J := JZero(37); A := Decomposition(J)[1];
> x := A![1/5,0];
> Parent(x);
Modular abelian variety 37A of dimension 1, level 37 and
conductor 37 over Q
> x in J;
false
> y := J!x; y;
Element of abelian variety defined by [1/5 -1/5 1/5 0] modulo
homology
> y in J;
true
> Parent(y);
Modular abelian variety JZero(37) of dimension 2 and level 37 over Q

Coercion also provides an easy way to create the 0 element.

> JZero(37)!0;
0

Example ModAbVar_Modabvar-Coercion2 (H145E33)

The following example illustrates the subtlety of coercion when the element being coerced in is a vector instead of a sequence. We create the quotient of J0(11) by a cyclic subgroup of order 10. The lattice that defines J0(11) is Z x Z, but the lattice that defines this quotient is (1/10)Z x Z. Thus the natural quotient map on vector spaces is defined by the identity matrix. On the other hand, the matrix of the quotient with respect to a basis for integral homology has determinant 10.
> A := JZero(11);
> x := A![1/10,0]; x;
Element of abelian variety defined by [1/10 0] modulo homology
> Order(x);
10
> B,pi := A/Subgroup([x]);
> B;
Modular abelian variety of dimension 1 and level 11 over Qbar
> pi;
Homomorphism from JZero(11)_Qbar to modular abelian variety of
dimension 1 given on integral homology by:
[10  0]
[ 0  1]
> Matrix(pi);
[1 0]
[0 1]
> IntegralMatrix(pi);
[10  0]
[ 0  1]
> base := Basis(IntegralHomology(B)); base;
[
    (1/10    0),
    (0 1)
]
If we coerce in the sequence [1/10,0] we get the point in B that is represented by 1/10th of the first generator for homology. If we coerce in the vector (1/10, 0), we instead get the element of B represented by that element of the rational homology, which is 0, since the lattice that defines B is embedded in such a way that it contains (1/10, 0).
> y := B![1/10,0]; y;
Element of abelian variety defined by [1/10 0] modulo homology
> Order(y);
10
> z := B!base[1]; z;
0

Modular Symbols to Homology

Modular symbols determine elements of the rational homology of J0(N), J1(N), etc., and hence of arbitrary modular abelian varieties, by using the modular parameterization. The commands below convert from modular symbols, which are represented in various ways, to vectors on the basis for rational or integral homology.

ModularSymbolToIntegralHomology(A, x) : ModAbVar, SeqEnum -> ModTupFldElt
ModularSymbolToIntegralHomology(A, x) : ModAbVar, Tup -> ModTupFldElt
The element of integral homology of the abelian variety A, naturally associated to the (formal) modular symbol x=P(X, Y){α , β }, where α , β are in P1(Q ) and P is a homogeneous polynomial of degree 2. The returned vector is written with respect to the basis of integral homology. The argument x may be given as a sequence [α, β] or as a tuple < P(X, Y), [α, β] > where α and β are in Cusps().
ModularSymbolToRationalHomology(A, x) : ModAbVar, ModSymElt -> ModTupFldElt
ModularSymbolToRationalHomology(A, x) : ModAbVar, SeqEnum -> ModTupFldElt
ModularSymbolToRationalHomology(A, x) : ModAbVar, Tup -> ModTupFldElt
The element of rational homology of the abelian variety A naturally associated to the (formal) modular symbol x=P(X, Y){α , β }, where α , β are in P1(Q ) and P is a homogeneous polynomial of degree 2. The returned vector is written with respect to the basis of rational homology. The argument x may be given as a modular symbol, a sequence [α, β] or as a tuple < P(X, Y), [α, β] > where α and β are in Cusps().

Example ModAbVar_Modabvar-Modular_Symbols_to_Homology (H145E34)

> A := JZero(11);
> x := ModularSymbolToIntegralHomology(A,[0,Infinity()]); x;
(  0 1/5)
> z := A!x; z;
Element of abelian variety defined by [0 1/5] modulo homology
> Order(z);
5
> A := JZero(47);
> x := ModularSymbolToIntegralHomology(A,[0,Infinity()]); x;
(-1/23  3/23 -4/23  4/23 -3/23  1/23  2/23  8/23)
> z := A!x;
> Order(z);
23

Example ModAbVar_Modabvar-Modular_Symbols_to_Homology2 (H145E35)

> J := JZero(11,4);
> IntegralHomology(J);
Lattice of rank 4 and degree 4
Basis:
( 3  1 -1 -1)
( 1 -1 -3  1)
( 2 -2  2  2)
( 2 -2  2 -2)
Basis Denominator: 8
> ModularSymbolToIntegralHomology(J,[0,Infinity()]);
(-4/61  5/61  1/61 -1/61)
Notice that for weight greater than 2 the homogeneous polynomial part of the modular symbol may be omitted. If so, it defaults to xk - 2.
> R<x,y> := PolynomialRing(RationalField(),2);
> ModularSymbolToIntegralHomology(J,<x^2,[0,Infinity()]>);
(-4/61  5/61  1/61 -1/61)
> ModularSymbolToIntegralHomology(J,<y^2,[0,Infinity()]>);
( 44/61 -55/61 -11/61  11/61)
The result of coercion to rational homology is different because it is written in terms of the basis for rational homology instead of the basis for integral homology, and in this example the two basis differ.
> ModularSymbolToRationalHomology(J,[0,Infinity()]);
( -7/488  -9/488 -11/488  13/488)

Coercion is also a way to define torsion points on abelian varieties.

> JZero(37)![1/5,0,0,0];
Element of abelian variety defined by [1/5 0 0 0] modulo homology

Embeddings

The Embeddings command contains a list of embeddings (up to isogeny) from A to other abelian varieties. The AssertEmbedding command allows you to add an embedding to the beginning of the list. The embeddings are used for computing intersections, sums, etc., with the embedding at the front of the list having highest priority.

Embeddings(A) : ModAbVar -> List
A list of morphisms from the modular abelian variety A into abelian varieties, which are used in making sense of intersections, sums, etc. The embeddings at the beginning of the list take precedence over those that occur later. Note that these maps might not really be injective; e.g., the modular embedding, which need only be injective on homology, is at the end of this list.
AssertEmbedding(~A, phi) : ModAbVar, MapModAbVar ->
Place the homomorphism φ of abelian varieties at the beginning of Embeddings(A) where A is a modular abelian variety. The morphism φ must have finite kernel.

Example ModAbVar_Modabvar-Embeddings (H145E36)

Every modular abelian variety comes equipped with at least one embedding, the "modular embedding".

> Embeddings(JZero(11));
[*
Homomorphism from JZero(11) to JZero(11) given on integral homology by:
[1 0]
[0 1]
*]
> A := JZero(37)(1);
> Embeddings(A);
[*
Homomorphism from 37A to JZero(37) given on integral homology by:
[ 1 -1  1  0]
[ 1 -1 -1  1]
*]
We add another embedding to the list of embeddings for A.
> phi := NaturalMap(A,JZero(37*2));
> AssertEmbedding(~A,phi);
> Embeddings(A);
[*
Homomorphism N(1) from 37A to JZero(74) given on integral homology
by:
[-1  1 -1  0  2 -1  1  0 -2  1 -2  2 -1  2 -1  1]
[-1  0  0  0  2 -1  1 -2  0  0 -1  1 -1  2  1 -1],
Homomorphism from 37A to JZero(37) given on integral homology by:
[ 1 -1  1  0]
[ 1 -1 -1  1]
*]
The following intersection would not make sense if we hadn't chosen an embedding of A into J0(74).
> B := Codomain(phi)(1); B;
Modular abelian variety 74A of dimension 2, level 2*37 and
conductor 2^2*37^2 over Q
> #(A meet B);
1

Base Change

The BaseExtend and ChangeRing commands allow you to change the base ring of a modular abelian variety. The BaseExtend command is the same ChangeRing, but is more restrictive. For example, if A is over Q then BaseExtend(A,GF(2)) is not allowed, but ChangeRing(A,GF(2)) is.

Abelian varieties can have their base ring set to a finite field, but there is very little that is implemented for abelian varieties over finite fields. Computing the number of points is implemented, but creation of actual points or homomorphisms is not.

CanChangeRing(A, R) : ModAbVar, Rng -> BoolElt, ModAbVar
Return true if it is possible to change the base ring of the modular abelian variety A to the ring R, and the modular abelian variety over R when possible.
ChangeRing(A, R) : ModAbVar, Rng -> ModAbVar
Return the modular abelian variety obtained from the modular abelian variety A having base ring R.
BaseExtend(A, R) : ModAbVar, Rng -> ModAbVar
Extend the base ring of the modular abelian variety A to the ring R, if possible. This is a more restrictive version of ChangeRing.

Example ModAbVar_Modabvar-Base_Change (H145E37)

We consider J1(13) over many fields and rings.

> A := JOne(13);
> BaseExtend(A,CyclotomicField(7));
Modular abelian variety JOne(13) of dimension 2 and level 13 over
Q(zeta_7)
> BaseExtend(A,AlgebraicClosure(RationalField()));
Modular abelian variety JOne(13)_Qbar of dimension 2 and level 13
over Qbar
> BaseExtend(A,RealField());
Modular abelian variety JOne(13)_R of dimension 2 and level 13 over R
> BaseExtend(A,ComplexField());
Modular abelian variety JOne(13)_C of dimension 2 and level 13 over C
> ChangeRing(A,GF(3));
Modular abelian variety JOne(13)_GF(3) of dimension 2 and level 13
over GF(3)
> #ChangeRing(A,GF(3));
19 19
> B := ChangeRing(A,GF(13)); B;
Modular abelian variety JOne(13)_GF(13) of dimension 2 and level 13
over GF(13)
> IsAbelianVariety(B);
false
> ChangeRing(A,Integers());
Modular abelian variety JOne(13)_Z of dimension 2 and level 13 over
Z
> ChangeRing(A,PolynomialRing(RationalField(),10));
Modular abelian variety JOne(13) of dimension 2 and level 13 over
Polynomial ring of rank 10 over Rational Field
Lexicographical Order
Variables: $.1, $.2, $.3, $.4, $.5, $.6, $.7, $.8, $.9, $.10

Additional Examples

Example ModAbVar_modabvar1 (H145E38)

The simplest abelian variety is an abelian variety of dimension 0, i.e., a point.
> A := ZeroModularAbelianVariety(); A;
Modular abelian variety ZERO of dimension 0 and level 1 over Q
We create the Jacobian J0(22) of the modular curve X0(22) as follows:
> J := JZero(22); J;
Modular abelian variety JZero(22) of dimension 2 and level 2*11 over Q
Notice that A is a subset of J0(22).
> A subset J;
true
We can also create the higher weight analogues J0(N, k) of J0(N), which are motives defined over Q. Many computations that make sense for J0(N) also make sense for these higher weight analogues.
> J4 := JZero(22,4); J4;
Modular motive JZero(22,4) of dimension 7 and level 2*11 over Q
> IsOnlyMotivic(J4);
true

One can also create J1(N):

> JOne(22);
Modular abelian variety JOne(22) of dimension 6 and level 2*11 over Q

For efficiency purposes, it is often much quicker to do computations working only with the +1 quotient of H1(J0(N), Z), or using only the -1 quotient. These computations will be off by powers of 2, or subgroups will be halved and off by a power of 2. Nonetheless, if you know what you are doing, such computations can be very useful. Create J0(N), but working only with the +1 quotient of homology as follows:

> Jplus := JZero(22,2,+1); Jplus;
Modular abelian variety JZero(22) of dimension 2 and level 2*11 over Q
with sign 1
> Sign(Jplus);
1
> Sign(JZero(22));
0
Notice that the sign is printed out when it is 1 or -1. Also, sign 0 is shorthand for "no sign", i.e., working with the full homology.

Example ModAbVar_additional2 (H145E39)

Let eps:(Z/NZ) * to Q(ζn) * be Dirichlet character. The command ModularAbelianVariety(eps) creates the modular abelian variety over Q corresponding to the cusp forms with Dirichlet character any Galois conjugate of eps.
> G<eps> := DirichletGroup(22,CyclotomicField(EulerPhi(22)));
> Order(eps);
10
> Conductor(eps);
11
> A := ModularAbelianVariety(eps); A;
Modular abelian variety of dimension 0 and level 2*11 over Q
> A := ModularAbelianVariety(eps^2); A;
Modular abelian variety of dimension 4 and level 2*11 over Q

Example ModAbVar_additional3 (H145E40)

Let H be a subgroup of G=(Z/NZ) * . The group (Z/NZ) * acts by diamond bracket operators as a group of automorphisms on X1(N), and the modular curve XH(N) is the quotient of X1(N) by the action of H. Thus if H=1, then XH(N)=X1(N), and if H=G, then XH(N)=X0(N). The command JH(N,d) creates an abelian variety isogenous to the Jacobian of XH(N), where d is the index of H in G (thus d=1 corresponds to J0(N)). A weight k and sign (either 0 or ∓ 1) can be provided. More precisely, JH(N,d) is the product of J(eps), where eps varies over Dirichlet characters such that eps(H)={1}.
> JH(22,1);
Modular abelian variety JZero(22) of dimension 2 and level 2*11 over Q
> JH(22,10);
Modular abelian variety Js(22) of dimension 6 and level 2*11 over Q
> JH(22,2);
Modular abelian variety J_H(22) of dimension 2 and level 2*11 over Q
As a shortcut, the command Js(N) creates a modular abelian variety that is isogenous to J1(N). Thus Js(N) is the same as JH(N,d), where d is the order of (Z/NZ) * .
> Js(22);
Modular abelian variety Js(22) of dimension 6 and level 2*11 over Q
> JH(22,10) eq Js(22);
true

Example ModAbVar_additional4 (H145E41)

We can also create modular abelian varieties attached to spaces of modular forms and spaces of modular symbols:
> ModularAbelianVariety(ModularForms(22));
Modular abelian variety of dimension 2 and level 2*11 over Q
> ModularAbelianVariety(ModularSymbols(22));
Modular abelian variety of dimension 2 and level 2*11 over Q

Example ModAbVar_additional5 (H145E42)

Here is another example, in which the space of modular forms is on Γ1(25).
> M := ModularForms(Gamma1(25)); M;
Space of modular forms on Gamma_1(25) of weight 2 and dimension
39 over Integer Ring.
> S := CuspidalSubspace(M); S;
Space of modular forms on Gamma_1(25) of weight 2 and dimension
12 over Integer Ring.
> A := ModularAbelianVariety(S); A;
Modular abelian variety of dimension 12 and level 5^2 over Q

Example ModAbVar_additional6 (H145E43)

We can also construct abelian varieties attached to newforms.
> S := CuspForms(43);
> N := Newforms(S); N;
[* [*
q - 2*q^2 - 2*q^3 + 2*q^4 - 4*q^5 + 4*q^6 + O(q^8)
*], [*
q + a*q^2 - a*q^3 + (-a + 2)*q^5 - 2*q^6 + (a - 2)*q^7 + O(q^8),
q + b*q^2 - b*q^3 + (-b + 2)*q^5 - 2*q^6 + (b - 2)*q^7 + O(q^8)
*] *]
> f := N[2][1]; f;
q + a*q^2 - a*q^3 + (-a + 2)*q^5 - 2*q^6 + (a - 2)*q^7 + O(q^8)
> A := ModularAbelianVariety(f); A;
Modular abelian variety Af of dimension 2 and level 43 over Q
> Newform(A);
q + a*q^2 - a*q^3 + (-a + 2)*q^5 - 2*q^6 + (a - 2)*q^7 + O(q^8)
When possible, we can also obtain a newform that gives rise to an abelian variety.
> J := JZero(43);
> D := Decomposition(J); D;
[
    Modular abelian variety 43A of dimension 1, level 43 and
    conductor 43 over Q,
    Modular abelian variety 43B of dimension 2, level 43 and
    conductor 43^2 over Q
]
> Newform(D[2]);
q + a*q^2 - a*q^3 + (-a + 2)*q^5 - 2*q^6 + (a - 2)*q^7 + O(q^8)

We demonstrate here how modular abelian varieties may be described by a label, using the string "43B". Continuing the previous code, we have:

> A := ModularAbelianVariety("43B");
> A eq D[2];
true
V2.28, 13 July 2023