Opened 2 years ago

Closed 2 years ago

#26699 closed defect (duplicate)

PariError RgX_to_ser (l <= 2) when computing dual isogeny

Reported by: gh-fvirdia Owned by:
Priority: major Milestone: sage-duplicate/invalid/wontfix
Component: elliptic curves Keywords: pari, isogeny, power series
Cc: Merged in:
Authors: Reviewers:
Report Upstream: Fixed upstream, in a later stable release. Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description (last modified by jdemeyer)

Hello,

I stumbled on a PariError? when trying to compute the dual of a 28-degree isogeny using Sage. The following code reproduces the issue on my local sage-8.1 build running PARI 2.9.4 on Ubuntu 18.04 64bit, and on aleph.sagemath.org running sage-8.4 and PARI 2.11.0.

sage: p = 417942208511
sage: Fp2.<i> = GF(p^2, modulus=[1,0,1])
sage: E = EllipticCurve(Fp2, [1, 0])
sage: R = E.point([148664587359*i + 249094580166 , 117953016727*i + 218000575119])
sage: phi = E.isogeny(R)
sage: phi.dual()
---------------------------------------------------------------------------
PariError                                 Traceback (most recent call last)
<ipython-input-6-a22a4f281a5d> in <module>()
----> 1 phi.dual()

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_curve_isogeny.pyc in dual(self)
   3427         # trac 7096
   3428         # this should take care of the case when the isogeny is not normalized.
-> 3429         u = self.formal()[1]
   3430         isom = WeierstrassIsomorphism(E2pr, (u/F(d), 0, 0, 0))
   3431 

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_curve_isogeny.pyc in formal(self, prec)
   3505         if yh.valuation() != -3:
   3506             raise RuntimeError("yh has valuation %s (should be -3)" % yh.valuation())
-> 3507         fh = f(xh,yh)
   3508         if fh.valuation() != -2:
   3509             raise RuntimeError("fh has valuation %s (should be -2)" % fh.valuation())

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/rings/fraction_field_element.pyx in sage.rings.fraction_field_element.FractionFieldElement.__call__ (build/cythonized/sage/rings/fraction_field_element.c:5426)()
    427             (-2*x1*x2 + x1 + 1)/(x1 + x2)
    428         """
--> 429         return self.__numerator(*x, **kwds) / self.__denominator(*x, **kwds)
    430 
    431     def _is_atomic(self):

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/rings/polynomial/multi_polynomial_element.pyc in __call__(self, *x, **kwds)
    150         y = K(0)
    151         for (m,c) in iteritems(self.element().dict()):
--> 152             y += c*prod([ x[i]**m[i] for i in range(n) if m[i] != 0])
    153         return y
    154 

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/structure/element.pyx in sage.structure.element.Element.__add__ (build/cythonized/sage/structure/element.c:10966)()
   1235         cdef int cl = classify_elements(left, right)
   1236         if HAVE_SAME_PARENT(cl):
-> 1237             return (<Element>left)._add_(right)
   1238         # Left and right are Sage elements => use coercion model
   1239         if BOTH_ARE_ELEMENT(cl):

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/rings/laurent_series_ring_element.pyx in sage.rings.laurent_series_ring_element.LaurentSeries._add_ (build/cythonized/sage/rings/laurent_series_ring_element.c:9343)()
    671             m = self.__n
    672             f1 = self.__u
--> 673             f2 = right.__u << right.__n - m
    674         elif self.__n > right.__n:
    675             m = right.__n

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/rings/power_series_ring_element.pyx in sage.rings.power_series_ring_element.PowerSeries.__lshift__ (build/cythonized/sage/rings/power_series_ring_element.c:13207)()
   1154 
   1155     def __lshift__(self, n):
-> 1156         return self.parent()(self.polynomial() << n, self.prec())
   1157 
   1158     def __rshift__(self, n):

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/structure/parent.pyx in sage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:9706)()
    921                 return mor._call_(x)
    922             else:
--> 923                 return mor._call_with_args(x, args, kwds)
    924 
    925         raise TypeError("No conversion defined from %s to %s"%(R, self))

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/structure/coerce_maps.pyx in sage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args (build/cythonized/sage/structure/coerce_maps.c:5112)()
    162                 print(type(C), C)
    163                 print(type(C._element_constructor), C._element_constructor)
--> 164             raise
    165 
    166 

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/structure/coerce_maps.pyx in sage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args (build/cythonized/sage/structure/coerce_maps.c:4952)()
    155             else:
    156                 if len(kwds) == 0:
--> 157                     return C._element_constructor(x, *args)
    158                 else:
    159                     return C._element_constructor(x, *args, **kwds)

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/rings/power_series_ring.pyc in _element_constructor_(self, f, prec, check)
    807             else:
    808                 raise TypeError("Can only convert series into ring with same variable name.")
--> 809         return self.element_class(self, f, prec, check=check)
    810 
    811     def construction(self):

/usr/local/src/sage-config/local/lib/python2.7/site-packages/sage/rings/power_series_pari.pyx in sage.rings.power_series_pari.PowerSeries_pari.__init__ (build/cythonized/sage/rings/power_series_pari.c:6164)()
    199                 self.g = g.Ser(v, prec)
    200             else:
--> 201                 self.g = g.Ser(v, prec - g.valuation(v))
    202 
    203         PowerSeries.__init__(self, parent, prec)

cypari2/gen.pyx in cypari2.gen.Gen.Ser()

cypari2/handle_error.pyx in cypari2.handle_error._pari_err_handle()

PariError: bug in RgX_to_ser (l <= 2), please report

Upstream bug: https://pari.math.u-bordeaux.fr/cgi-bin/bugreport.cgi?bug=2092

Change History (4)

comment:1 Changed 2 years ago by jdemeyer

  • Authors Fernando Virdia deleted
  • Description modified (diff)

comment:2 Changed 2 years ago by jdemeyer

  • Description modified (diff)
  • Report Upstream changed from N/A to Reported upstream. No feedback yet.

comment:3 Changed 2 years ago by jdemeyer

  • Report Upstream changed from Reported upstream. No feedback yet. to Fixed upstream, but not in a stable release.

comment:4 Changed 2 years ago by jdemeyer

  • Milestone changed from sage-8.5 to sage-duplicate/invalid/wontfix
  • Report Upstream changed from Fixed upstream, but not in a stable release. to Fixed upstream, in a later stable release.
  • Resolution set to duplicate
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.