An elliptic curve E may be created by specifying Weierstrass coordinates for the curve over a field K, where integer coordinates are interpreted as elements of Q. Note that the coordinate ring K defines the base point set of E, and points defined over an extension field of K must be created in the appropriate point set.
Given a sequence of elements of a ring K, create the elliptic curve E over K defined by taking the elements of the sequence as Weierstrass coefficients. The length of the sequence must either be two, that is s=[a, b], in which case E is defined by y^2z = x^3 + axz^2 + bz^3, or five, that is s=[a_1, a_2, a_3, a_4, a_6], in which case E is given by y^2z + a_1xyz + a_3yz^2=x^3 + a_2x^2z + a_4xz^2 + a_6z^3. Currently K must be field; if integers are given, they will be coerced into Q. The given coefficients must define a nonsingular curve; that is, the discriminant of the curve must be nonzero.
Given a ring element j, creates the elliptic curve E over K with j-invariant equal to j defined as follows. If j = 0 and K does not have characteristic 3 then E is defined by y^2 + y = x^3; if j = 1728 then E is defined by y^2 = x^3 + x (which covers the case where j = 0 and K has characteristic 3); otherwise j - 1728 is invertible in K, and E is defined by y^2 + xy = x^3 - (36/(j - 1728))x - 1/(j - 1728).
Given a genus one hyperelliptic curve (in the sense of Chapter CrvHyp) of degree 3, return an elliptic curve E, an isomorphism C -> E, taking the unique point at infinity on C to the identity element of E, and its inverse E -> C.
Given a curve with an equation in elliptic Weierstrass form (i.e., whose affine representation is y^2 + a_1xy + a_3y - x^3 - a_2x^2 - a_4x - a_6 = 0), returns the corresponding elliptic curve E, as well as the isomorphisms PC -> E and E -> PC (where PC is the projective form of C).
Given a projective genus one plane curve C (in the sense of Chapter PLANE ALGEBRAIC CURVES) and a nonsingular point P on C, returns an elliptic curve E and a birational map C -> E taking P to the identity element of E, followed by the inverse morphism from E to C. Note that the birational map is only defined at nonsingular points of C.
Given a finite field K, returns a representative supersingular elliptic curve.
If the given sequence of ring elements defines an elliptic curve of nonzero discriminant then this function returns true, and if so, returns the elliptic curve.
If C is a genus 1 hyperelliptic curve of odd degree then returns true, and if so, returns the corresponding elliptic curve E, the isomorphism C -> E, and its inverse.
> E := EllipticCurve([1, 2]); > E; Elliptic Curve defined by y^2 = x^3 + x + 2 over Rational Field > E ! [1, 2]; (1 : 2 : 1)The same curve over a finite field:
> K := FiniteField(11); > E := EllipticCurve([K | 1, 2]); > E ! [2, 1]; (2 : 1 : 1)To define points over an extension field, we need to create the appropriate point set.
> K2<w> := FiniteField(11, 2); > R<r> := PolynomialRing(K2); > a := Roots(r^2-2)[1][1]; > a^2; 2Alternatively, we could define a new curve over the extension field.
> // The following produces an error:
> E ! [0, a, 1]; >> E ! [0, a, 1]; ^ Runtime error in '!': Cannot coerce element into ring > E(K2) ! [0, a, 1]; (0 : w^6 : 1)
> E2 := EllipticCurve([K2 | 1, 2]); > E2 ! [0, a, 1]; (0 : w^6 : 1)Note that the field of definition of a curve can also be changed with BaseChange.
The following general scheme functions provide a convenient way to generate a new elliptic curve similar to an old one but defined over a different field. Some care must be taken, however: if the result would not define a valid elliptic curve then the functions will still succeed but the object returned will be a general curve rather than an elliptic curve.
Given an elliptic curve E defined over a field k, and a field K which is an extension of k, return an elliptic curve E' over K using the natural inclusion of k in K to map the coefficients of E into K.
Given an elliptic curve E defined over a field k, and a field K, return an elliptic curve E' over K by using the standard coercion from k to K to map the coefficients of E into K. This is useful when there is no appropriate ring homomorphism between k and K (e.g., when k=Q and K is a finite field).
Given an elliptic curve E over a field k and a ring map h : k -> K, return an elliptic E' over K by applying h to the coefficients of E.
The base extension of the elliptic curve E over a finite field to its degree n extension.
> K1 := GF(23); > K2 := GF(23,2); > f := hom<K1 -> K2 | >; > E1 := EllipticCurve([K1 | 1, 1]); > E2 := EllipticCurve([K2 | 1, 1]); > assert E2 eq BaseExtend(E1, K2); > assert E2 eq BaseExtend(E1, f);
> // this is illegal, since K1 is not an extension of K2
> BaseExtend(E2, K1); >> BaseExtend(E2, K1); ^ Runtime error in 'BaseExtend': Coercion of equations is not possible > assert E1 eq ChangeRing(E2, K1); // but this is OK
Given an elliptic curve E returns an isomorphic elliptic curve E' in simplified Weierstrass form y^2 = x^2 + ax + b. The base ring of E must not have characteristic 2 or 3, as then such a simplified form does not exist. The isomorphism E -> E' is returned as the second value, followed by the inverse isomorphism E' -> E.
N.B. The related function WeierstrassCoefficients is deprecated and may be removed in a later release.
Given an elliptic curve E defined over the rational field Q, returns an isomorphic curve E' defined over Q but with integral coefficients. The isomorphism E -> E' is returned as the second value, followed by the inverse isomorphism E' -> E.
Given an elliptic curve E defined over Q, returns a global minimal model E' for E. By definition the minimal model E' is an integral model isomorphic to E over Q, such that the discriminant of E' has minimal p-adic valuation at all primes p. The isomorphism E -> E' is returned as the second value, followed by the inverse isomorphism E' -> E.
Returns a simplified model of the elliptic curve E. If E is defined over Q this is the same as MinimalModel. Otherwise, if the characteristic of the base ring is different from 2 and 3, the simplified model agrees with the WeierstrassModel. For characteristics 2 and 3 the situation is more complicated; see Ian Connell's "The Elliptic Curve Handbook" for the definition for curves defined over finite fields. The isomorphism E -> E' is returned as the second value, followed by the inverse isomorphism E' -> E.
Returns true if and only if E is in simplified Weierstrass form.
Returns true if and only if E is an integral model.
Returns true if and only if E is a minimal model.
Returns true if and only if E is a simplified model.
> EE := EllipticCurve([1/2, 1/2, 1, 1/3, 4]); > EE; Elliptic Curve defined by y^2 + 1/2*x*y + y = x^3 + 1/2*x^2 + 1/3*x + 4 over Rational Field > IE := IntegralModel(EE); > IE; Elliptic Curve defined by y^2 + 3*x*y + 216*y = x^3 + 18*x^2 + 432*x + 186624 over Rational Field > ME, ma, mb := MinimalModel(IE); > ME; Elliptic Curve defined by y^2 + x*y + y = x^3 - x^2 + 619*x + 193645 over Rational Field > ma; Elliptic curve isomorphism from: CrvEll: IE to CrvEll: ME Taking (x : y : 1) to (x + 7 : y + x + 104 : 1) > mb; Elliptic curve isomorphism from: CrvEll: ME to CrvEll: IE Taking (x : y : 1) to (x - 7 : y - x - 97 : 1) > WE := EllipticCurve(WeierstrassCoefficients(EE)); > WE; Elliptic Curve defined by y^2 = x^3 + 9909/16*x + 6201603/32 over Rational Field > IWE := IntegralModel(WE); > IWE; Elliptic Curve defined by y^2 = x^3 + 649396224*x + 208091266154496 over Rational Field > IsIsomorphic(IWE, ME); true
Given an elliptic curve E and an element of the base ring, return the quadratic twist by d, in the form of a SimplifiedModel. In characteristic 2, the curve is isomorphic to E if and only if the trace of d is 0, otherwise the curve is isomorphic to E if and only if d is a square.
Given an elliptic curve E over a finite field, return a quadratic twist, i.e. a nonisomorphic curve whose trace is the negation of Trace(E). The return value is given in the form of a SimplifiedModel.
Given an elliptic curve E over a finite field, return the sequence of nonisomorphic quadratic twists. Each curve is given in the form of a SimplifiedModel, and the first is isomorphic to E.
Given an elliptic curve over a finite field K, return the sequence of all nonisomorphic elliptic curves over K which are isomorphic over an extension field. Each curve is given in the form of a SimplifiedModel, and the first is isomorphic to E.
> K := GF(13);
> E := EllipticCurve([K | 3, 1]);
> E5 := QuadraticTwist(E, 5);
> E5;
Elliptic Curve defined by y^2 = x^3 + 10*x + 8 over GF(13)
> S := QuadraticTwists(E);
> S;
[
Elliptic Curve defined by y^2 = x^3 + 3*x + 1 over GF(13),
Elliptic Curve defined by y^2 = x^3 + 12*x + 5 over GF(13)
]
> IsIsomorphic(S[1], E);
true
> IsIsomorphic(S[2], E5);
true