Opened 10 years ago

Last modified 8 years ago

#12880 closed defect

Inconsistent domain, codomain and parent in EllipticCurveIsogeny — at Version 6

Reported by: nthiery Owned by: cremona
Priority: minor Milestone: sage-6.3
Component: elliptic curves Keywords: isogeny
Cc: sage-combinat, pbruin, defeo, sbesnier Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #11474 Stopgaps:

Status badges

Description (last modified by pbruin)

In the following example, the domain and codomain of phi do not match those of its parent::

sage: E = EllipticCurve(j=GF(7)(0))
sage: phi = EllipticCurveIsogeny(E, [E(0), E((0,1)), E((0,-1))])
sage: phi.parent()
Set of Morphisms from Abelian group of points on Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 to Abelian group of points on Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7 in Category of hom sets in Category of Schemes
sage: phi.parent().domain()
Abelian group of points on Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
sage: phi.domain()
Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
sage: phi.parent().codomain()
Abelian group of points on Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
sage: phi.codomain()
Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7

Change History (6)

comment:1 Changed 9 years ago by davidloeffler

  • Component changed from number theory to elliptic curves
  • Owner changed from was to cremona

comment:2 Changed 9 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:3 Changed 9 years ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:4 Changed 8 years ago by pbruin

  • Cc pbruin added

comment:5 Changed 8 years ago by cremona

I have used elliptic curve isogenies a huge amount and this has never bothered me, presumably because it never occurred to me to ask for the parent of an isogeny. If anyone wants to change this without breaking anything they are welcome, but I don't care very much.

comment:6 Changed 8 years ago by pbruin

  • Dependencies set to #11474
  • Description modified (diff)
  • Priority changed from major to minor

It should be very easy to fix in principle:

  • src/sage/schemes/elliptic_curves/ell_curve_isogeny.py

    diff --git a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py b/src/sage/schemes/e
    index 5cdbbdf..a729d3a 100644
    a b class EllipticCurveIsogeny(Morphism): 
    13221322        self._codomain = self.__E2
    13231323
    13241324        # sets up the parent
    1325         parent = homset.Hom(self.__E1(0).parent(), self.__E2(0).parent())
     1325        parent = homset.Hom(self.__E1, self.__E2)
    13261326        Morphism.__init__(self, parent)
    13271327
    1328         return
    1329 
    1330 
    13311328    # initializes the base field
    13321329    def __init_algebraic_structs(self, E):
    13331330        r"""

The only problem is that this breaks testing for equality of isogenies, due to #11474. Suppose E -> E1 is an isogeny and E2 is an elliptic curve that is equal but not identical to E1. Then Hom(E, E1) and Hom(E, E2) will also be equal but not identical; since the coercion model assumes uniqueness of parents, it will never regard corresponding elements of Hom(E, E1) and Hom(E, E2) as equal.

For some reason the Hom sets between the groups of points, on the other hand, are identical, which explains why equality testing currently is not broken.

Note: See TracTickets for help on using tickets.