Barinder, I'll look into this (tomorrow) -- it's my code.  Please open
a ticket and CC me.  It's happening in the code to reduce a model with
respect to scaling by units.

John

On Tue, 12 Jul 2022 at 16:19, Barinder Banwait <b.s.banwai...@gmail.com> wrote:
>
> Dear sage-devel,
>
> I am running into an issue with computing isogeny classes of elliptic curves 
> over number fields.
>
> Here is what I entered:
>
> K.<a> = QuadraticField(4569)
> myJ = 46969655/32768
> E = EllipticCurve(j=K(myJ))
> C = E.isogeny_class()
>
> This raises a KeyError in the first instance, which seems to be handled via a 
> direct call to IsogenyClass_EC_NumberField, but this then raises a 
> ValueError: Cannot convert infinity or NaN to Sage Integer. The full stack 
> trace is in the PS.
>
> This error has occurred on sage-9.4 on a system whose `uname -a` is `Linux 
> LEGENDRE 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 
> x86_64 x86_64 GNU/Linux`, as well as on sage-9.7-beta5 on `Linux Barinder 
> 5.4.0-121-generic #137-Ubuntu SMP Wed Jun 15 13:33:07 UTC 2022 x86_64 x86_64 
> x86_64 GNU/Linux`.
>
> Changing the field K to many other quadratic fields does not yield any error. 
> However I did also notice this error with many j-invariants in 
> QuadraticField(6537), so it somehow seems to be base-field dependent.
>
> Best wishes,
> Barinder
>
> PS. Full traceback:
>
> ---------------------------------------------------------------------------
> KeyError                                  Traceback (most recent call last)
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/structure/category_object.pyx
>  in sage.structure.category_object.CategoryObject.getattr_from_category 
> (build/cythonized/sage/structure/category_object.c:7074)()
>     838         try:
> --> 839             return self.__cached_methods[name]
>     840         except KeyError:
>
> KeyError: '_isoclass'
>
> During handling of the above exception, another exception occurred:
>
> AttributeError                            Traceback (most recent call last)
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in isogeny_class(self, reducible_primes, algorithm, minimal_models)
>    3007         try:
> -> 3008             return self._isoclass
>    3009         except AttributeError:
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/structure/category_object.pyx
>  in sage.structure.category_object.CategoryObject.__getattr__ 
> (build/cythonized/sage/structure/category_object.c:6993)()
>     832         """
> --> 833         return self.getattr_from_category(name)
>     834
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/structure/category_object.pyx
>  in sage.structure.category_object.CategoryObject.getattr_from_category 
> (build/cythonized/sage/structure/category_object.c:7159)()
>     847
> --> 848             attr = getattr_from_other_class(self, cls, name)
>     849             self.__cached_methods[name] = attr
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/cpython/getattr.pyx
>  in sage.cpython.getattr.getattr_from_other_class 
> (build/cythonized/sage/cpython/getattr.c:2552)()
>     366         dummy_error_message.name = name
> --> 367         raise AttributeError(dummy_error_message)
>     368     cdef PyObject* attr = instance_getattr(cls, name)
>
> AttributeError: 'sage.sets.pythonclass.Set_PythonType_class' object has no 
> attribute '_Hom_'
>
> During handling of the above exception, another exception occurred:
>
> ValueError                                Traceback (most recent call last)
> <ipython-input-1-a9c20a51d066> in <module>
>       2 myJ = Integer(46969655)/Integer(32768)
>       3 E = EllipticCurve(j=K(myJ))
> ----> 4 C = E.isogeny_class()
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in isogeny_class(self, reducible_primes, algorithm, minimal_models)
>    3009         except AttributeError:
>    3010             from sage.schemes.elliptic_curves.isogeny_class import 
> IsogenyClass_EC_NumberField
> -> 3011             self._isoclass = IsogenyClass_EC_NumberField(self, 
> reducible_primes=reducible_primes, algorithm=algorithm, 
> minimal_models=minimal_models)
>    3012             return self._isoclass
>    3013
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/isogeny_class.py
>  in __init__(self, E, reducible_primes, algorithm, minimal_models)
>     705         self._algorithm = algorithm
>     706         self._minimal_models = minimal_models
> --> 707         IsogenyClass_EC.__init__(self, E, label=None, empty=False)
>     708
>     709     def copy(self):
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/isogeny_class.py
>  in __init__(self, E, label, empty)
>      68         self._label = label
>      69         if not empty:
> ---> 70             self._compute()
>      71
>      72     def __len__(self):
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/isogeny_class.py
>  in _compute(self, verbose)
>     789             sys.stdout.write(" possible isogeny degrees: %s" % degs)
>     790             sys.stdout.flush()
> --> 791         isogenies = E.isogenies_prime_degree(degs, 
> minimal_models=self._minimal_models)
>     792         if verbose:
>     793             sys.stdout.write(" -actual isogeny degrees: %s" % 
> Set(phi.degree() for phi in isogenies))
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in isogenies_prime_degree(self, l, algorithm, minimal_models)
>    3108             return self.isogenies_prime_degree(L, 
> minimal_models=minimal_models)
>    3109
> -> 3110         isogs = sum([self.isogenies_prime_degree(p, 
> minimal_models=minimal_models) for p in l],
>    3111                     [])
>    3112
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in <listcomp>(.0)
>    3108             return self.isogenies_prime_degree(L, 
> minimal_models=minimal_models)
>    3109
> -> 3110         isogs = sum([self.isogenies_prime_degree(p, 
> minimal_models=minimal_models) for p in l],
>    3111                     [])
>    3112
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in isogenies_prime_degree(self, l, algorithm, minimal_models)
>    3097             try:
>    3098                 if l.is_prime(proof=False):
> -> 3099                     return isogenies_prime_degree(self, l, 
> minimal_models=minimal_models)
>    3100                 else:
>    3101                     raise ValueError("%s is not prime." % l)
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/isogeny_small_degree.py
>  in isogenies_prime_degree(E, l, minimal_models)
>    2340         return isogenies_2(E, minimal_models=minimal_models)
>    2341     if l==3:
> -> 2342         return isogenies_3(E, minimal_models=minimal_models)
>    2343
>    2344     p = E.base_ring().characteristic()
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/isogeny_small_degree.py
>  in isogenies_3(E, minimal_models)
>     754     from sage.rings.number_field.number_field_base import 
> is_NumberField
>     755     model = "minimal" if minimal_models and 
> is_NumberField(E.base_field()) else None
> --> 756     isogs = [E.isogeny(f, model=model) for f in ff]
>     757     return isogs
>     758
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/isogeny_small_degree.py
>  in <listcomp>(.0)
>     754     from sage.rings.number_field.number_field_base import 
> is_NumberField
>     755     model = "minimal" if minimal_models and 
> is_NumberField(E.base_field()) else None
> --> 756     isogs = [E.isogeny(f, model=model) for f in ff]
>     757     return isogs
>     758
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_field.py
>  in isogeny(self, kernel, codomain, degree, model, check)
>     876         """
>     877         try:
> --> 878             return EllipticCurveIsogeny(self, kernel, codomain, 
> degree, model, check=check)
>     879         except AttributeError as e:
>     880             raise RuntimeError("Unable to construct isogeny: %s" % e)
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_curve_isogeny.py
>  in __init__(self, E, kernel, codomain, degree, model, check)
>    1015         self.__compute_E2()
>    1016
> -> 1017         self.__setup_post_isomorphism(codomain, model)
>    1018
>    1019         if (pre_isom is not None):
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_curve_isogeny.py
>  in __setup_post_isomorphism(self, codomain, model)
>    1800                     raise ValueError("specifying minimal for model 
> flag only valid with curves over number fields.")
>    1801
> -> 1802                 newE2 = oldE2.global_minimal_model(semi_global=True)
>    1803                 post_isom = oldE2.isomorphism_to(newE2)
>    1804
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in global_minimal_model(self, proof, semi_global)
>    2042                 from .kraus import semi_global_minimal_model
>    2043                 E, P = semi_global_minimal_model(self)
> -> 2044             return E._scale_by_units()._reduce_model()
>    2045
>    2046         raise ValueError("%s has no global minimal model!  For a 
> semi-global minimal model use semi_global=True" % self)
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in _scale_by_units(self)
>     987         from sage.modules.all import vector
>     988         v = 
> vector([(x4.abs().nth_root(4)+x6.abs().nth_root(6)).log()*d for x4,x6,d in 
> zip(c4s,c6s,degs)])
> --> 989         es = [e.round() for e in -Ainv*U*v]
>     990         u = prod([uj**ej for uj,ej in zip(fu,es)])
>     991         return self.scale_curve(u)
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/schemes/elliptic_curves/ell_number_field.py
>  in <listcomp>(.0)
>     987         from sage.modules.all import vector
>     988         v = 
> vector([(x4.abs().nth_root(4)+x6.abs().nth_root(6)).log()*d for x4,x6,d in 
> zip(c4s,c6s,degs)])
> --> 989         es = [e.round() for e in -Ainv*U*v]
>     990         u = prod([uj**ej for uj,ej in zip(fu,es)])
>     991         return self.scale_curve(u)
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/rings/real_mpfr.pyx
>  in sage.rings.real_mpfr.RealNumber.round 
> (build/cythonized/sage/rings/real_mpfr.c:22391)()
>    3015         cdef RealNumber x = self._new()
>    3016         mpfr_round(x.value, self.value)
> -> 3017         return x.integer_part()
>    3018
>    3019     def floor(self):
>
> /scratch/sage/sage-9.4/local/lib/python3.8/site-packages/sage/rings/real_mpfr.pyx
>  in sage.rings.real_mpfr.RealNumber.integer_part 
> (build/cythonized/sage/rings/real_mpfr.c:17420)()
>    2256         """
>    2257         if not mpfr_number_p(self.value):
> -> 2258             raise ValueError('Cannot convert infinity or NaN to Sage 
> Integer')
>    2259
>    2260         cdef Integer z = Integer()
>
> ValueError: Cannot convert infinity or NaN to Sage Integer
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sage-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sage-devel/6220eeaf-6fa3-450f-883b-4932f0cd2d74n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAD0p0K4rSCaNpot7siFpKtEkVXrx38e1Fdwn_MKPsgyaGCRkwA%40mail.gmail.com.

Reply via email to