Points on an elliptic curve over a field
are given in terms of projective coordinates:
a point (a, b, c) is equivalent to (x, y, z) if and only if there
exists an element u (in the field of definition) such that
ua=x, ub=y, and uc=z. The equivalence class of (x, y, z) is
denoted by the projective point
(x:y:z). At least one of the projective coordinates
must be non-zero. We call the coefficients normalized if either
z=1, or z=0 and y=1.
E ! [x, y, z] : CurveEll, [RngElt] -> CurveEllPt
Given an elliptic curve E over R and coefficients x, y, z in R satisfying the equation for E, return the normalized point P=(x:y:z) on E. If z is not specified it is assumed to be 1.
Return the normalized identity point (0:1:0) on the curve E.
True if the sequence of values in S are the coordinates of a point in E, false otherwise. If this is true, then the corresponding point is returned as the second value.
True iff the sequence of values in S are the coordinates of a point in the lift of E over K; the corresponding point is returned as the second value.
Returns the set of rational points of E over its coefficient ring.
Returns the set of rational points of the curve obtained by extending the coefficient ring of E to K.
The points on an elliptic curve over a field form an abelian
group, for which we use the additive notation. The identity element
is the point O=(0:1:0).
P + Q : CurveEllPt, CurveEllPt -> CurveEllPt
Given two points P and Q on the same elliptic curve, this returns their sum, which is also a point on E.
Given two points P and Q on the same elliptic curve, set P to their sum, which is also a point on E.
The negative of the point P on an elliptic curve E; that is, the point Q on E such that P + Q=O.
The difference P + ( - Q) of points P, Q, on the same elliptic curve E.
The multiple m.P=P.m of the point P on E, for integer m. Here m.P is the sum of m copies of P for positive m, the identity point for m=0 and ( - m).( - P) for negative m.
Set P to the multiple m.P=P.m of the point P on E, for integer m.
> // First, construct the function field > E := EllipticCurve([GF(97) | 1, 2]); > a1, a2, a3, a4, a6 := Explode(aInvariants(E)); > R := BaseRing(E); > Px<x> := FunctionField(R); > Py<Y> := PolynomialRing(Px); > F<y> := quo< Py | (Y^2 + (a1*x + a3)*Y - (x^3 + a2*x^2 + a4*x + a6))>; > > EF := Lift(E, F); // Now lif the curve to be over its own function field > gen_pt := EF![x,y]; // and form the generic point (x, y, 1) > 2*gen_pt; ((73*x^4 + 48*x^2 + 93*x + 73)/(x^3 + x + 2), (85*x^6 + 37*x^4 + 5*x^3 + 60*x^2 + 96*x + 8)/(x^6 + 2*x^4 + 4*x^3 + x^2 + 4*x + 4)*y, 1)// Check that addition of generic points corresponds to the usual laws > Q<x, y> := PolynomialRing(R, 2); > two_times := Isogeny(E, E, x^3 + x + 2, 73*x^4 + 48*x^2 + 93*x + 73, > (85*x^6 + 37*x^4 + 5*x^3 + 60*x^2 + 96*x + 8)*y ); > P := Random(E); > P := Random(E); > two_times(P); (32, 93, 1) > 2*P; (32, 93, 1)
Given a point on an elliptic curve defined over Q, this function computes the order of P; that is, the smallest positive integer n such that n.P=O on the curve. If such an n does not exist, 0 is returned to indicate infinite order. If the point is on an elliptic curve defined over a finite field, this function returns the order of the point as above. This function will not accept points on elliptic curves defined over other fields.
> E := EllipticCurve([GF(23) | 1, 2]); > S<X> := PolynomialRing(Integers()); > K<u> := NumberField(X^2 - Trace(E)*X + 23); > p := 23; > Order(E); 24 > r := 1; p^r + 1 - Trace(u^r); 24 > Order(Lift(E, GF(23, 2))); 576 > Order(E, 2); 576 > r := 2; p^r + 1 - Trace(u^r); 576 > Order(Lift(E, GF(23, 3))); 12168 > Order(E, 3); 12168 > r := 3; p^r + 1 - Trace(u^r); 12168
These functions require that the corresponding elliptic curve has integral
coefficients.
NaiveHeight(P) : CurveEllPt -> FldPrElt
Given a point P=(a/b, c/d) on an elliptic curve E defined over Q, returns the naive (or Weil) height of P, which is defined as log max{|a|, |b|}.
Given a point P on an elliptic curve E defined over Q with integer coefficients, this returns the canonical height of P (as a real number).
Given a point P on an elliptic curve E defined over Q with integer coefficients, this function returns the local height of P at p; here p must be either a prime number or 0. In the latter case the height at the infinite prime is returned. The return value is a real number.
Given two points P, Q on the same elliptic curve defined over Q with integer coefficients, this function returns the height pairing of P, and Q, which is defined by (h(P + Q) - h(P) - h(Q))/2, where h denotes the canonical height.
Given a point P on an elliptic curve, this function returns a sequence of length 3 consisting of its coefficients (normalized).
Access the i-th coefficient for an elliptic curve point P, for 1 <= i <= 3.
True if and only if the point P on the elliptic curve E is the identity point on E, false otherwise.
True if and only if P and Q are points on the same elliptic curve and have the same coordinates (after normalization).
Given a point P on an elliptic curve defined over Q, this function returns true if and only if the coordinates of the (normalization of) P are integers.
Returns true if P has order m, false otherwise.
Given an elliptic curve E over K, and an element x in K, determine whether there exists y in K such that [x, y, 1] is a rational point of E. If so, the function returns one such value for y and the point [x, y, 1] in E. Note that the point at infinity of E will never be returned.
> E := EllipticCurve([GF(NextPrime(10^12)) | 1, 1]); > Order(E); 1000001795702 > P := Random(E); > IsOrderOfPoint(P, Order(E)); true > P; (652834414164, 320964687531, 1)