Skip to content

Vélu isogeny formulas use incorrect a-invariants when pre-isomorphism is set #33214

@yyyyx4

Description

@yyyyx4

With Sage 9.5.rc3:

sage: E = EllipticCurve(GF(71^2), [5,5])
sage: phi = E.isogeny(E.lift_x(0))
sage: E1 = E.change_weierstrass_model(9,8,7,6)
sage: phi = phi * E1.isomorphism_to(E)
sage: P = E1.lift_x(1)
sage: P in phi.domain()
True
sage: phi(P)
---------------------------------------------------------------------------

# ...

~/prg/sage/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py in _call_(self, P)
   1182             outP = (tempX, tempY)
   1183
-> 1184         return self.__E2(outP)
   1185
   1186     def __getitem__(self, i):

# ...

TypeError: Coordinates [46, 3*z2 + 44, 1] do not define a point on Elliptic Curve defined by y^2 = x^3 + 5*x + 5 over Finite Field in z2 of size 71^2

The reason is the following code in EllipticCurveIsogeny.__compute_via_velu():

        a1 = self.__E1.a1()
        a3 = self.__E1.a3()

Here, .__E1 is the same as .domain(), but the Vélu formulas compute the "inner" isogeny. Thus, these should be the a1,a3 constants of the pre-isomorphism codomain.

CC: @JohnCremona @categorie @defeo

Component: elliptic curves

Author: Lorenz Panny

Branch/Commit: 3b823d0

Reviewer: John Cremona, Frédéric Chapoton

Issue created by migration from https://trac.sagemath.org/ticket/33214

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions