Skip to content

Composition of elliptic curve isogenies #31850

@loefflerd

Description

@loefflerd
mannequin

Currently, composing two elliptic curve isogenies (with compatible domain and codomain) returns some sort of formal composite homomorphism, rather than an EllipticCurveIsogeny object:

sage: E = EllipticCurve(GF(3), [1, 0])                                          
sage: f = E.isogenies_prime_degree(7)[0]                                        
sage: E2 = f.codomain()                                                         
sage: g = E2.isogenies_prime_degree(7)[0]                                       
sage: g * f                                                                     
Composite map:
  From: Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 3
  To:   Elliptic Curve defined by y^2 = x^3 + x + 2 over Finite Field of size 3
  Defn:   Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 3 to Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 3
        then
          Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 3 to Elliptic Curve defined by y^2 = x^3 + x + 2 over Finite Field of size 3
sage: type(g * f)                                                               
<class 'sage.categories.map.FormalCompositeMap'>

This is clearly suboptimal and can also return mathematically wrong answers with comparisons between isogenies (since it doesn't correctly detect when two compositions are equal). It would be nice if composing isogenies returned an EllipticCurveIsogeny object.

CC: @defeo @yyyyx4

Component: elliptic curves

Keywords: isogenies

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions