Four types of maps between elliptic curves may be constructed: isogenies, isomorphisms, translations and rational maps. Isogenies and isomorphisms are by far the most important, and have the most functions associated to them.
These maps are currently undergoing revision to bring them into line with the general scheme maps; currently only the isomorphisms have had the requisite changes made. As a consequence, isomorphisms may no longer be used in places where an isogeny is required. In the next release of Magma these morphisms will be compatible (where this makes sense); until then there are conversion functions to move between isogenies and isomorphisms.
Given elliptic curves E and F defined over the same field K, and
multivariate polynomials psi, phi, omegain K[x, y] with psiand phi monic,
this function returns the corresponding isogeny between E and F.
Currently there is the additional restriction that psiand phi
must be univariate in x.
To handle isogenies of even degree we do the following:
if the degree of the isogeny is odd, set psi' = psi. Otherwise,
write psi= psi_2^2 psi_0 and set psi' = psi_2 psi_0.
Then the isogeny is defined by
Phi((0 : 1 : 0)) = (0 : 1 : 0),
psi(x) = 0: Phi((x : y : 1)) = (0 : 1 : 0)
psi(x) != 0: Phi((x : y : 1)) = (phi(x)/psi'(x,y)^2 : w(x,y)/psi'(x,y)^3 : 1)
for any point (x:y:1) defined over K.
> FF := FiniteField(167); > a := FF!2; b := FF!3; r := a^2 - 4*b; > E1 := EllipticCurve([0, a, 0, b, 0]); > E2 := EllipticCurve([0, -2*a, 0, r, 0]); > P<x,y> := PolynomialRing(E1); > f := Isogeny(E1, E2, x, x^2 + a*x + b, y*(b-x^2)); > g := Isogeny(E2, E1, 2*x, x^2 - 2*a*x + r, y*(r-x^2)); > // Verify that f and g are dual isogenies of degree 2 > &and[ g(f(P)) eq 2*P : P in RationalPoints(E1) ]; true > &and[ f(g(Q)) eq 2*Q : Q in RationalPoints(E2) ]; true
Given elliptic curves E and F defined over the same field K, and four elements r, s, t, u of K (where u != 0), returns the isomorphism E -> F mapping O_E |-> O_F and mapping (x, y) |-> (u^2x + r, u^3y + su^2x + t). This function returns an error if the values passed do not define such an isomorphism.
Given elliptic curves E and F defined over the same field K, this function computes and returns an isomorphism from E to F where such an isomorphism exists. The map returned will be the same as the second return value of IsIsomorphic.
Given an elliptic curve E defined over a field K, and four elements r, s, t, u of K (where u != 0), returns the isomorphism E -> E mapping O_E |-> O_F and mapping (x, y) |-> (u^2x + r, u^3y + su^2x + t). This function returns an error if the values passed do not define such an isomorphism.
The sequence [r, s, t, u] of elements defining the isomorphism I.
> K := GF(73); > E1 := EllipticCurve([K | 3, 4, 2, 5, 1]); > E2 := EllipticCurve([K | 8, 2, 29, 45, 28]); > IsIsomorphic(E1, E2); true > m := Isomorphism(E1, E2, [3, 2, 1, 4]); > m; Elliptic curve isomorphism from: CrvEll: E1 to CrvEll: E2 Taking (x : y : 1) to (16*x + 3 : 64*y + 32*x + 1 : 1) > P1 := Random(E1); > P2 := Random(E1); > m(P1 + P2) eq m(P1) + m(P2); trueFrom the isomorphism data, we can apply the map by hand if desired:
> r,s,t,u := Explode(IsomorphismData(Inverse(m))); > P3 := E2![69, 64]; > x,y := Explode(Eltseq(P3)); > E1 ! [ u^2*x + r, u^3*y + s*u^2*x + t ]; (68 : 32 : 1) > m($1) eq P3; true
Returns true if and only if the isogeny I has the same action as some isomorphism, in which case it also returns the isomorphism.
Takes a map I of type isomorphism and returns an equivalent map with type isogeny.
> FF := FiniteField(23); > E0 := EllipticCurve([FF | 1,1]); > E1 := EllipticCurve([FF | 3,2]); > b, iso := IsIsomorphic(E0, E1); > b; true > iso; Elliptic curve isomorphism from: CrvEll: E0 to CrvEll: E1 Taking (x : y : 1) to (16*x : 18*y : 1) > isog := IsomorphismToIsogeny(iso); > isog; Elliptic curve isogeny from: CrvEll: E0 to CrvEll: E1 taking (x : y : 1) to (16*x : 18*y : 1) > b, new_iso := IsIsomorphism(isog); > b; true > inv := Inverse(new_iso); > P := Random(E0); > inv(isog(P)) eq P; true
Given a rational point P on E, returns the morphism t_P : E -> E defined by t_P(Q) = P + Q, for all rational points Q of E.
Let i be an isogeny and t be a translation map t_P: E -> E where t_P(Q) = P + Q for some rational point P in E. This function returns the rational map phi : E -> F obtained by composing i and t (applying t first). Any rational map E -> F can be represented in this form.
> E1 := EllipticCurve([GF(23) | 1,1]); > E2 := EllipticCurve([GF(23,2) | 1,1]);The doubling map on E_1 lifted to E_2:
> f := map<E1 -> E2 | P :-> 2*P>;Two slightly different ways to define the negation map on E_1 lifted to E_2:
> f := map<E1 -> E2 | P :-> E2![P[1], -P[2], P[3]]>; > f := map<E1 -> E2 | P :-> (P eq E1!0) select E2!0 > else E2![P[1], -P[2], 1]>;
Let G be a subgroup scheme of an elliptic curve E. There is a separable isogeny f: E -> E_f of degree d to some other elliptic curve E_f, which has kernel G. This function returns the curve E_f and the map f using Velu's formulae.
Returns a sequence of isogenies whose product is the isogeny returned by the invocation IsogenyFromKernel(G). The isogenies have either degree 2 or odd degree. This function was introduced because composing isogenies is computationally expensive.
Given an elliptic curve E and a univariate polynomial which defines a subscheme of E which is a subgroup of the set of rational points for E, compute an isogeny using Velu's formulae as above.
Returns a sequence of isogenies whose product is the isogeny returned by the invocation IsogenyFromKernel(G). The isogenies have either degree 2 or odd degree. This function was introduced because composing isogenies is computationally expensive.
Given an isogeny I, and a subgroup G which contains the kernel of I, find the image of G under the action of I. The subgroup G may be replaced by its defining polynomial v.
> E := EllipticCurve([GF(97) | 2, 3]); > E1, f := IsogenyFromKernel(E, DivisionPolynomial(E, 5));The image curve E_1 is isomorphic, but not equal to the original curve E. We proceed to find the dual of f.
> deg := Degree(f); > psi := DivisionPolynomial(E, deg); > f1 := PushThroughIsogeny(f, psi); > E2, g := IsogenyFromKernel(E1, f1); > // Velu's formulae give an isomorphic curve, not the curve itself. > IsIsomorphic(E2, E); true > h := Isomorphism(E2, E); > f_dual := g*IsomorphismToIsogeny(h);The latter isogeny is the dual of f, as we verify:
> &and [ f_dual(f(P)) eq deg*P : P in RationalPoints(E) ]; true
The univariate polynomial psiused in defining the isogeny I. The roots of psidetermine the kernel of I.
The polynomial psiused in defining the isogeny I as a multivariate polynomial.
The denominator of the fraction giving the image of the x-coordinate of a point under the isogeny I (the numerator is returned by IsogenyMapPhi(I)).
The univariate polynomial phi used in defining the isogeny I.
The polynomial phi used in defining the isogeny I as a multivariate polynomial.
The multivariate polynomial omegaused in defining the isogeny I.
The subgroup of the domain consisting of the elements that map to zero under the isogeny I.
The degree of the morphism I.
Let E be an elliptic curve defined over the field K. The set of endomorphisms ( End)(E) of E to itself forms a ring under composition and addition of maps.
The endomorphism ring of E always contains a subring isomorphic to Z. A curve E whose endomorphism ring contains additional isogenies is said to have complex multiplication. If E is defined over a finite field, then E always has complex multiplication. The endomorphism ring of E is isomorphic to an order in either a quadratic number field or a quaternion algebra.
The multiplication-by-m endomorphism [m] : E -> E, such that [m](P) = m * P.
The identity isogeny E -> E.
The identity map E -> E as an isomorphism.
The Frobenius isogeny (x : y : 1) |-> (x^(p^i) : y^(p^i) : 1) of an elliptic curve defined over a finite field of characteristic p.
Equivalent to FrobeniusMap(E, 1).
> p := 23;
> FF1 := FiniteField(p);
> FF2 := FiniteField(p,2);
> E1 := EllipticCurve([FF1 | 1,3]);
> E2 := BaseExtend(E1,FF2);
> frob := FrobeniusMap(E2, 1);
> #{ E1!P : P in RationalPoints(E2) | P eq frob(P) } eq #E1;
true
Let E be an elliptic curve defined over the field K. The set of automorphisms ( Aut)(E) of E forms a group under composition of maps. Recall that an automorphism is defined by the sequence [r, s, t, u] such that (x, y) |-> (u^2 x + r, u^3 y + su^2 x + t).
The identity isomorphism which fixes every point of E, defined by [r, s, t, u] = [0, 0, 0, 1].
The isomorphism which maps P to -P, for all P in E.
Composition of the maps f and g, corresponding to multiplication in the automorphism group.
Returns true if and only if the image of the isogeny I is the zero element of its codomain.
Returns true if and only if the isogenies I and J are equal.[Next][Prev] [Right] [Left] [Up] [Index] [Root]