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.