# 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](modabvar.md#elt-coerce).

## 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: Elt Arithmetic (ex-1b77c0)`

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.

```magma
> 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

```

## 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: Elt Invariants (ex-657a6b)`

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

```magma
> 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.

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

```

## 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: Elt Predicates (ex-63bae7)`

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

```magma
> 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”.

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

```

## 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: Elt Homomorphisms (ex-ca6f04)`

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$.

```magma
> 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

```

## 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`

```magma
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: Elt Representation Of Torsion Points (ex-68387a)`

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

```magma
> 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$.

```magma
> 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

```
