[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Function Field

The torsion or division polynomials are the polynomials or functions defining the subschemes of n-torsion points on the elliptic curve. The affine equation order of the function field is the natural home of the torsion polynomials. In order to obtain the division polynomial as a univariate polynomial, the syntax DivisionPolynomial is used; to obtain the same as a function on the curve, the syntax DivisionFunction is used.

Subsections

Function Field and Polynomial Ring

FunctionField(E) : CrvEll -> FldFun
The function field of the elliptic curve.
EquationOrder(E) : CrvEll -> RngOrdFun
The affine equation order of the elliptic curve.
PolynomialRing(E) : CrvEll -> RngMPol, Map
Returns a bivariate polynomial ring over the coefficient ring of E. This ring is stored with E and is the parent of the various multivariate polynomials associated with E, such as the division polynomials and the "omega" polynomial of any isogeny with domain E. The second return value is the map to the EquationOrder.
DefiningPolynomial(E) : CrvEll -> RngMPolElt
DefiningEquation(E) : CrvEll -> RngMPolElt
The affine defining polynomial for E, as an element of PolynomialRing(E).

Torsion Polynomials

DivisionFunction(E, n) : Fld, RngIntElt -> RngFunOrdElt
The n-th division polynomial as an element of the affine equation order of the function field of E.
DivisionPolynomial(E, n) : CrvEll, RngIntElt -> RngUPolElt, RngUPolElt, RngUPolElt
DivisionPolynomial(E, n, g) : CrvEll, RngIntElt, RngUPolElt -> RngUPolElt, RngUPolElt, RngUPolElt
Given an elliptic curve E and an integer n, returns the n-th division polynomial as a univariate polynomial over the base ring of E. If n is even, this polynomial has multiplicity two at the nonzero 2-torsion points of the curve. The second return value is the n-th division polynomial, divided by the univariate 2-torsion polynomial if n is even. The third argument is the cofactor, equal to the univariate 2-torsion polynomial if n is even, and 1 otherwise.

If a polynomial is passed as a third argument, the division polynomial is computed efficiently modulo that polynomial.

TwoTorsionPolynomial(E) : CrvEll -> RngMPolElt
Returns the multivariate 2-torsion polynomial 2y + a_1x + a_3 as an element of PolynomialRing(E), where the equation of the curve is
y^2 + a_1*xy + a_3*y = x^3 + a_2*x^2 + a_4*x + a_6.

Example CrvEll_DivisionPolynomial (H85E14)

Let E be an elliptic curve over a finite field K. The following code fragment illustrates the relationship between the roots in K of the n-th division polynomial for E, and the x-coordinates of the points of n-torsion on E.

> K := GF(101);
> E := EllipticCurve([ K | 1, 1]);
> Roots(DivisionPolynomial(E, 5));
[ <86, 1>, <46, 1> ]
> [ P : P in RationalPoints(E) | 5*P eq E!0 ];
[ (86 : 34 : 1), (0 : 1 : 0), (46 : 25 : 1), (86 : 67 : 1), (46 : 76 : 1) ]
A point worth noting is that even if the roots of the division polynomial lie in the field, the corresponding points may not, instead lying in a quadratic extension.

> Roots(DivisionPolynomial(E, 9));
[ <4, 1>, <17, 1>, <28, 1>, <34, 1>, <77, 1> ]
> Points(E, 4);
[]
> K2<w> := ext<K | 2>;
> Points(E(K2), 4);
[ (4 : 82*w + 57 : 1), (4 : 19*w + 44 : 1) ]
> Order($1[1]);      
9

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]