Elements of Modular Abelian Varieties

We represent torsion points on modular abelian varieties as follows. Suppose \(A\) is an abelian variety defined over the complex numbers \({\mathbb{C}}\). Then \(A({\mathbb{C}})\) is canonically isomorphic to \(H_1(A,{\mathbb{R}})/H_1(A,{\mathbb{Z}})\), and the torsion subgroup of \(A({\mathbb{C}})\) is isomorphic to \(H_1(A,{\mathbb{Q}})/H_1(A,{\mathbb{Z}})\). We represent a torsion element of \(A({\mathbb{C}})\) by giving a representative element of \(H_1(A,{\mathbb{Q}})\). The functions below provide basic arithmetic operations with such elements, application of homomorphisms, and conversion functions.

Sometimes it is useful to consider elements of \(H_1(A,{\mathbb{R}})\), given by floating point vectors (i.e., over RealField()). These represent certain points of infinite order, but without further information we do not know exactly what point they represent, or even whether such a point is \(0\).

Elements can only be created independently of other elements by coercion, see Section Coercion.

Arithmetic

The following commands describe the basic arithmetic operations available for elements of modular abelian varieties. Operations include addition, subtraction, and multiplication by an integer, rational number, or real number.

a * x: FldReElt, ModAbVarElt -> ModAbVarElt
a * x: FldRatElt, ModAbVarElt -> ModAbVarElt
a * x: RngIntElt, ModAbVarElt -> ModAbVarElt

Product of the integer, rational, or real number \(a\) by the element \(x\) of a modular abelian variety.

x * a: ModAbVarElt, FldReElt -> ModAbVarElt
x * a: ModAbVarElt, FldRatElt -> ModAbVarElt
x * a: ModAbVarElt, RngIntElt -> ModAbVarElt

Product of the element \(x\) of a modular abelian variety by the integer, rational, or real number \(a\).

x + y: ModAbVarElt, ModAbVarElt -> ModAbVarElt

The sum of elements \(x\) and \(y\) of a modular abelian variety.

x - y: ModAbVarElt, ModAbVarElt -> ModAbVarElt

The difference of elements \(x\) minus \(y\) of a modular abelian variety.

Example: Arithmetic with Torsion Points (ex-1b77c0)

Run in calculator (opens in a new tab)

In this example, we construct \(J_0(23)\), and consider the finite subgroup \(\ker(T_3-5)\), which has order \(400\). We then do various arithmetic operations with some of its elements.

> A := JZero(23);
> t3 := HeckeOperator(A,3);
> Factorization(CharacteristicPolynomial(t3));
[
    <x^2 - 5, 2>
]
> G := Kernel(t3-5);
> #G;
400
> Generators(G);
[
    Element of abelian variety defined by [1/10 0 1/10 1/5] modulo homology,
    Element of abelian variety defined by [0 0 0 -5/2] modulo homology,
    Element of abelian variety defined by [1/10 -1/10 0 -1/5] modulo homology,
    Element of abelian variety defined by [1 -3/2 2 1] modulo homology
]
> x := G.1;
> 1.5*x;
Element of abelian variety defined by [0.149999999999999999999999999998 0.E-28
0.149999999999999999999999999998
0.299999999999999999999999999996] modulo homology
> (3/2)*x;
Element of abelian variety defined by [3/20 0 3/20 3/10] modulo homology
> 10*x;
0
> x*1.5;
Element of abelian variety defined by [0.149999999999999999999999999998 0.E-28
0.149999999999999999999999999998
0.299999999999999999999999999996] modulo homology
> 1.5*x eq x*1.5;
true
> x*(3/2);
Element of abelian variety defined by [3/20 0 3/20 3/10] modulo homology
> x*5;
Element of abelian variety defined by [1/2 0 1/2 1] modulo homology
> G.1 + G.2;
Element of abelian variety defined by [1/10 0 1/10 -23/10] modulo homology
> G.1 - G.2;
Element of abelian variety defined by [1/10 0 1/10 27/10] modulo homology

Run in calculator (opens in a new tab)

Invariants

These commands compute information about the order of an element, the degree of the homology of the parent variety, and a field that the point is defined over.

Order(x): ModAbVarElt -> RngIntElt

Given an element of a modular abelian variety \(x\), return the order of \(x\), if \(x\) is known exactly. Otherwise an error occurs.

ApproximateOrder(x): ModAbVarElt -> RngIntElt

Given a point \(x\) on a modular abelian variety return the exact order of \(x\), if \(x\) is known exactly as a torsion point, and if not the order of an approximation of \(x\) by a torsion point, obtained using continued fractions.

Degree(x): ModAbVarElt -> RngIntElt

The dimension of the homology of the parent of \(x\), where \(x\) is an element of a modular abelian variety.

FieldOfDefinition(x): ModAbVarElt -> ModTupFldElt

A field that \(x\) is defined over, which need not be minimal, where \(x\) is an element of a modular abelian variety.

Example: Orders of a Torsion Point (ex-657a6b)

Run in calculator (opens in a new tab)

We compute a \(2\)-torsion point on the elliptic curve \(J_0(11)\), compute some approximate orders, and compute the degree.

> A := JZero(11);
> G := Kernel(nIsogeny(A,2));
> G;
Finitely generated subgroup of abelian variety with invariants
[ 2, 2 ]
> x := G.1;
> ApproximateOrder(Sqrt(2)*x);
1023286908188737
> ApproximateOrder(1.000000000000001*x);
2
> Degree(x);
2

Notice that FieldOfDefinition(x) is valid, but far from optimal. It would be better to return the number field generated by the \(2\)-torsion point.

> FieldOfDefinition(x);
Algebraically closed field with no variables
> FieldOfDefinition(0*x);
Rational Field
> Order(x);
2

Run in calculator (opens in a new tab)

Predicates

These are commands for testing equality, inclusion, whether an element is \(0\), and whether an element is known exactly, (i.e., as an element of \(H_1(A,{\mathbb{Q}})\), or just as an element of \(H_1(A,{\mathbb{R}})\)).

x eq y: ModAbVarElt, ModAbVarElt -> BoolElt

Return true if the elements \(x\) and \(y\) of a modular abelian variety are equal.

x in X: ModAbVarElt, List -> BoolElt

Return true if the element \(x\) of a modular abelian variety is an element of the list \(X\).

IsExact(x): ModAbVarElt -> BoolElt

Return true if the element \(x\) of a modular abelian variety is known exactly, i.e., \(x\) is defined by an element of the rational homology.

IsZero(x): ModAbVarElt -> BoolElt

Return true if the element \(x\) of a modular abelian variety is known exactly and is equal to \(0\). If \(x\) is not known exactly, return true if a real homology vector that represents \(x\) is “very close” to an element of the integral homology, where very close means that the distance is within \(1/10^n\), where \(n\) is M`point_precision and \(M\) is the parent of \(x\).

Example: Predicates on Torsion Points (ex-63bae7)

Run in calculator (opens in a new tab)

We demonstrate each of these commands using elements of the \(2\)-torsion subgroups of the two elliptic curves of conductor \(37\).

> J := JZero(37);
> A, B := Explode(Decomposition(J));
> A;
Modular abelian variety 37A of dimension 1, level 37 and
conductor 37 over Q
> B;
Modular abelian variety 37B of dimension 1, level 37 and
conductor 37 over Q
> A2 := Kernel(nIsogeny(A,2));
> B2 := Kernel(nIsogeny(B,2));
> x := A2.1;
> y := B2.2;
> x eq y;
false
> x in [* x, y *];
true
> IsZero(x);
false
> IsZero(0*x);
true
> IsExact(1.0000000000000000000001*x);
false
> IsExact((2/3)*x);
true

For non-exact elements, IsZero means “is quite close to 0”.

> IsZero(0.0001*x);
false
> IsZero(0.00001*x);
true
> IsZero(0.000000000001*x);
true
> A`point_precision;
10

Run in calculator (opens in a new tab)

Homomorphisms

There are two notations for applying a homomorphism to an element. One can find an inverse image of an element using the @@ command.

x @ phi: ModAbVarElt, MapModAbVar -> ModAbVarElt
phi(x): ModAbVarElt, MapModAbVar -> ModAbVarElt

The image of the element \(x\) of a modular abelian variety under the homomorphism \(\phi\) of abelian varieties.

x @@ phi: ModAbVarElt, MapModAbVar -> ModAbVarElt

An inverse image of the element \(x\) of a modular abelian variety under the homomorphism \(\phi\) of abelian varieties.

Example: Homomorphisms Acting on Elements (ex-ca6f04)

Run in calculator (opens in a new tab)

Let \(\phi = T_3 - 5\) acting on the abelian surface \(J_0(23)\). We apply \(\phi\) to an element of the kernel \(G\) of \(\phi\), and get \(0\). We also find an element \(y\) such that \(\phi(y)\) is a certain element of \(G\).

> A := JZero(23);
> phi := HeckeOperator(A,3) - 5;
> G := Kernel(phi);
> x := G.1;
> Order(x);
10
> phi(x);
0
> zero := A!0;
> z := zero@@phi; z;
0
> y := x@@phi; y;
Element of abelian variety defined by [-1/20 1/20 -1/20 -1/20] modulo homology
> phi(y) in G;
true
> y@phi eq phi(y);
true

Run in calculator (opens in a new tab)

Representation of Torsion Points

An exact torsion point representation of an element of a modular abelian variety can be found using continued fractions to find good rational approximations for each coordinate of a representative real homology class. A representative element of the homology can also be retrieved.

The Eltseq command gives the sequence of entries of the vector returned by Element.

ApproximateByTorsionPoint(x : parameters): ModAbVarElt -> ModAbVarElt
Cutoff: RngIntElt                    Default: 10^3

If the modular abelian variety element \(x\) is defined by an element \(z\) in the real homology \(H_1(A,R)\), find an element of \(H_1(A,{\mathbb{Q}})\) which approximates \(z\), using continued fractions, and return the corresponding point.

Element(x): ModAbVarElt -> ModTupFldElt

The vector in homology which represents the element \(x\) of a modular abelian variety.

LatticeCoordinates(x): ModAbVarElt -> ModTupFldElt

A vector over the rational or real field which represents the element \(x\) with respect to the basis for integral homology of the parent abelian variety of \(x\).

Eltseq(x): ModAbVarElt -> SeqEnum

The Eltseq of LatticeCoordinates(x) where \(x\) is an element of a modular abelian variety.

Example: Representing a 3-Torsion Point (ex-68387a)

Run in calculator (opens in a new tab)

This code illustrates each of the commands for a \(3\)-torsion point in \(J_0(33)\).

> A := JZero(33);
> x := A![1/3,0,0,0,0,0];
> x;
Element of abelian variety defined by [1/3 0 0 0 0 0] modulo homology
> Order(x);
3
> ApproximateByTorsionPoint(1.001*x);
Element of abelian variety defined by [1001/3000 0 0 0 0 0] modulo homology
> Element(x);
(1/3   0   0   0   0   0)
> Eltseq(x);
[ 1/3, 0, 0, 0, 0, 0 ]
> LatticeCoordinates(x);
(1/3   0   0   0   0   0)

The Element and LatticeCoordinates can differ when the integral structure on the homology is complicated. This is common when the weight is bigger than \(2\).

> A := JZero(11,4); A;
Modular motive JZero(11,4) of dimension 2 and level 11 over Q
> x := A![1/3,0,0,0];
> Element(x);
(  1/8  1/24 -1/24 -1/24)
> Eltseq(x);
[ 1/3, 0, 0, 0 ]
> LatticeCoordinates(x);
(1/3   0   0   0)
> x;
Element of abelian variety defined by [1/3 0 0 0] modulo homology

Run in calculator (opens in a new tab)