Isogenies and isomorphisms
Given elliptic curves E and F defined over the same field K, and multivariate polynomials psi , phi, omega in K[x, y] with psi and phi monic, satisfying deg phi > deg psi ^2, this function returns an isogeny between E and F viewed as a map Phi : E[bar K] -> F[bar K].If the degree of the isogeny is odd, the map is defined by:
Phi((0:1:0)) = (0:1:0), and
Phi((X:Y:1))= cases( (0:1:0)&if psi (X)=0, cr ((phi(X)/ psi ^2(X)): ( omega (X, Y)/ psi ^3(X)): 1)&if psi (X) != 0cr) for any point (X:Y:1) defined over K. A subtle problem occurs when the isogeny has even degree. In this case, psi should really be a product psi = psi _2 tilde psi where psi _2 represents the two - torsion and should properly be represented as a multivariate polynomial. In order that psi be univariate, we assume that psi is presented as psi = psi _2^2 tilde psi . This is consistent with the way the two - torsion in handled when returning univariate division polynomials. In effect, it means we are counting the included two - torsion points twice. In this case the isogeny is defined by:
Phi((0:1:0)) = (0:1:0), and
Phi((X:Y:1))= cases( (0:1:0)&if psi (X)=0 or psi _2^2(X)=0, cr ((phi(X) /( psi _2^2 tilde psi ^2(X))): ( omega (X, Y)/( psi _2^3 tilde psi ^3(X))): 1)&if psi (X) != 0cr) for any point (X:Y:1) defined over K..
> FF<w> := FiniteField(101); > P<x, y> := PolynomialRing(FF, 2); > a := FF!2; > b := FF!3; > r := a^2 - 4*b; > assert r ne 0; > E1 := EllipticCurve([0, a, 0, b, 0]); > E2 := EllipticCurve([0, -2*a, 0, r, 0]); > m := Isogeny(E1, E2, x, x^2 + a*x + b, y*(b-x^2)); > m_star := Isogeny(E2, E1, 2*x, x^2 - 2*a*x + r, y*(r-x^2)); > { m_star(m(p)) eq 2*p : p in RationalPoints(E1)} eq { true }; 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 which maps (x, y) |-> (u^2x + r, u^3 y + su^2 x + t). This function returns an error if the values passed do not define an isomorphism.
Returns the isogeny with the same action as the isomorphism I.
Returns true iff the isogeny I has the same action as some isomorphism, in which case it also returns the isomorphism.
> FF := GF(23); > E0 := EllipticCurve([FF | 1,1]); > E1 := EllipticCurve([FF | 3,2]); > b, iso := IsIsomorphic(E0, E1); > b; true > isog := IsomorphismToIsogeny(iso); > assert Degree(isog) eq 1; > b, new_iso := IsIsomorphism(isog); > b; true > inv := Inverse(new_iso); > P := Random(E0); > inv(isog(P)) eq P; true
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 which maps (x, y) |-> (u^2x + r, u^3 y + su^2 x + t). This function returns an error if the values passed do not define an isomorphism.
Given an elliptic curve E defined over a field K, and four elements r, s, t, u of K (where u != 0), returns an elliptic curve F isomorphic to E by the isomorphism (x, y) |-> (u^2x + r, u^3 y + su^2 x + t), and the isomorphism itself.
Given a rational point P on E, returns the morphism [P] : E -> E defined by [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.
M := map<E1 -> E2 | P :-> 2*P>; M := map<E1 -> E2 | P :-> E2![P[1], -P[2], P[3]]>; M := map<E1 -> E2 | P :-> (P eq E1!0) select E2!0 else E2![P[1], -P[2], 1]>;
Let G be a subgroup of an elliptic curve E. There is a separable isogeny Phi: E -> E_d of degree d to some other elliptic curve E_d, which has kernel G. This function returns the curve E_d and the map Phi. The calculations are done using Velu's formulae.
Returns a sequence of isogenies whose product is the isogeny returned by 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 IsogenyFromKernel(G). The isogenies have either degree 2 or odd degree. This function was introduced because composing isogenies is computationally expensive.
IsogenyMapPsi(I) : Map -> RngUPolElt
Returns the multivariate polynomial psi used in defining the isogeny I. The roots of psi determine the kernel of I.
Returns the polynomial psi used in defining the isogeny I as a univariate polynomial.
Returns the multivariate polynomial phi used in defining the isogeny I.
Returns the polynomial phi used in defining the isogeny I as a univariate polynomial.
Returns the multivariate polynomial omega used in defining the isogeny I.
Returns the subgroup of the domain consisting of the elements that map to zero under the isogeny I.
Returns the degree of the morphism I.
Returns the separable degree of the isogeny I.
Returns the inseparable degree of the isogeny I.
Takes a map of type isomorphism and returns an equivalent map with type sogeny.
Let E be an elliptic curve defined over the field K. The set of isogenies End(E) = { isogenies E -> E } forms a ring under composition and addition of maps.
The endormorphism ring of E always contains a subring isomorphic to Z generated by the Frobenius isomorphism. A curve E whose endomorphism ring contains more isogenies than these is said to have complex multiplication.
If E is defined over a finite field, then E alwasys has complex multiplication. The endomorphism ring of E is isomorphic to an order in either a quadratic number field (if E is ordinary) or a quaternion algebra (if E is supersingular).
For an integer n, this returns the multiplication by n morphism as an element of the endomorphism ring H=End_K(E). In particular, for n = 1 the identity morphism is returned as the map [x, 1, 1, 1], for n = 0 the zero map [0, 0, 1, 0], and for n = (-1) the inversion map [x, 1, - 1, 1].
Sum of two elements of the same endomorphism ring, defined by (f + g) (P) = f(P) + g(P) for all points P on the curve.
Difference of two elements of the same endomorphism ring.
k-fold iterated composition of an element of the endomorphism ring.
Returns the multiplication-by-m endomorphism [m] : E -> E, such that [m](P) = m * P.
Returns the identity isogeny E -> E.
Returns the identity map E -> E as an isomorphism.
Returns the Frobenius isogeny [x, y] |-> [x^(p^i), y^(p^i)] of an elliptic curve defined over a finite field of characteristic p.
Equivalent to FrobeniusMap(E, 1).
> PR := 23; > FF2<w2> := FiniteField(PR, 2); > FF1<w1> := FiniteField(PR, 1); > a := 1; b := 3; > E := EllipticCurve([FF2 | a, b]); > fr := FrobeniusMap(E, 1); > E1 := EllipticCurve([FF1 | a, b]); > { E1!p : p in RationalPoints(E) | fr(p) eq p} eq RationalPoints(E1); true
> // First we create the curve and the isogeny. > E := EllipticCurve([GF(97) | 2, 3]); > E1, I := Velu(E, DivisionPolynomial(E, 5)); > > // Now we find the dual > deg := Degree(I); > p := DivisionPolynomial(E, deg); > np := PushThroughIsogeny(I, p); > E2, J := Velu(E1, np); > // Velu's formulae give an isomorphic curve, not the curve itself > b, c := IsIsomorphic(E2, E); > assert (b and #E2 eq #E); > dual_I := J*c; // the dual of our original isogeny > > // Check our answer > P := Random(E); P; dual_I(I(P)) eq deg*P; (12, 94, 1) true
Let E be an elliptic curve defined over the field K.
The set of iomorphisms Aut(E) = { isomorphisms E -> E }
forms a group under composition of maps.
AutomorphismGroup(E) : CurveEll -> Rng
Let E be an elliptic curve defined over the field K. This returns the group of isomorphisms H = End_K(E) from E to E over K under composition.
Returns the identity isomorphism which fixes every point of E, having [r, s, t, u] = [0, 0, 0, 1].
Returns 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.
k-fold iterated composition of an element of the automorphism group.
Returns true iff the image of the isogeny I is the zero element of its codomain.
Returns true iff the isogenies I and J are equal.
Returns true iff the isogeny I is separable.
Returns true iff the isogeny I is inseparable.
Lift the isogeny I to be defined over the base ring K.
Lift the isomorphism I to be defined over the base ring K.[Next] [Prev] [Right] [Left] [Up] [Index] [Root]