Abelian Group Structure

Like all group functions on elliptic curves, these intrinsics really apply to a particular point set; the curve is identified with its base point set for the purposes of these functions. To aid exposition only the versions that take the curves are shown but an appropriate point set over a finite field may be used instead.

AbelianGroup(H) : SetPtEll -> GrpAb, Map
AbelianGroup(E) : CrvEll -> GrpAb, Map
TorsionSubgroup(H) : SetPtEll -> GrpAb, Map
TorsionSubgroup(E) : CrvEll -> GrpAb, Map
Computes the abelian group isomorphic to the group of rational points on the elliptic curve E over a finite field. The function returns two values: an abelian group A and a map m from A to E. The map m provides an isomorphism between the abstract group A and the group of rational points on the curve.
Generators(H) : SetPtEll -> [ PtEll ]
Generators(E) : CrvEll -> [ PtEll ]
Given an elliptic curve E defined over a finite field or a pointset H of E, this function returns generators for the group of points of E. The i-th element of the sequence corresponds to the i-th generator of the group as returned by the function AbelianGroup.
NumberOfGenerators(H) : SetPtEll -> RngIntElt
NumberOfGenerators(E) : CrvEll -> RngIntElt
Ngens(H) : SetPtEll -> RngIntElt
Ngens(E) : CrvEll -> RngIntElt
The number of generators of the group of rational points of (the point set H of) the elliptic curve E; this is simply the length of the sequence returned by Generators(E).

Example CrvEllFldFin_AbelianGroup (H129E6)

A simple example of some of the above calls in action:
> FF<w> := GF(1048583, 2);
> E := EllipticCurve([ 1016345*w + 272405, 660960*w + 830962 ]);
> A, m := AbelianGroup(E);
> A;
Abelian Group isomorphic to Z/3 + Z/366508289334
Defined on 2 generators
Relations:
  3*A.1 = 0
  366508289334*A.2 = 0
> S := Generators(E);
> S;
[ (191389*w + 49138 : 878749*w + 1008891 : 1), (852793*w + 24192 :
    376202*w + 48552 : 1) ]
> S eq [ m(A.1), m(A.2) ];
true
V2.28, 13 July 2023