The issue is with this line of the PR: denom = R.ideal(list(self)).absolute_norm().denominator()
list(self) is a list of polynomials. You want the ideal of the coefficients of those polynomials. On Sunday, June 25, 2023 at 3:54:07 PM UTC-5 Jing Guo wrote: > Hello everyone, > > As it is mentioned [here](*https://github.com/sagemath/sage/issues/35797 > <https://github.com/sagemath/sage/issues/35797>*), we are trying to > resolve this issue, which is mainly going on in this > [PR](*https://github.com/sagemath/sage/pull/35809 > <https://github.com/sagemath/sage/pull/35809>*). > > One of the questions that we face is that when running the following > example code (the last test of the docstring): > > > > > > *sage: R.<x> = QQ[]sage: K.<a> = NumberField(3*x^2 + 1)sage: P.<z,w> = > ProjectiveSpace(K, 1)sage: f = DynamicalSystem_projective([a*(z^2 + w^2), > z*w])sage: f.normalize_coordinates(); f* > > We obtain the following error: > > > *TypeError: not a constant polynomial* > > I did some search online but couldn't find anything helpful, so I was > wondering if you could give me some hints or ideas? > > Thank you! > > Jing > > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > Cell In [28], line 5 > 3 P = ProjectiveSpace(K, Integer(1), names=('z', 'w',)); (z, w,) = > P._first_ngens(2) > 4 f = DynamicalSystem_projective([a*(z**Integer(2) + w**Integer(2)), > z*w]) > ----> 5 f.normalize_coordinates(); f > > File ~/github/sage/src/sage/schemes/projective/projective_morphism.py:993, > in SchemeMorphism_polynomial_projective_space.normalize_coordinates(self, > **kwds) > 991 denom = lcm([self[i].denominator() for i in > range(len(list(self)))]) > 992 else: > --> 993 denom = R.ideal(list(self)).absolute_norm().denominator() > 995 self.scale_by(denom) > 997 # There are cases, such as the example above over GF(7), > 998 # where we want to compute GCDs, but NOT in the case > 999 # where R is a NumberField of class number > 1. > > File ~/github/sage/src/sage/rings/number_field/number_field.py:3632, in > NumberField_generic.ideal(self, *gens, **kwds) > 3607 """ > 3608 Return a fractional ideal of the field, except for the > 3609 zero ideal, which is not a fractional ideal. > (...) > 3629 Fractional ideal (1) > 3630 """ > 3631 try: > -> 3632 return self.fractional_ideal(*gens, **kwds) > 3633 except ValueError: > 3634 return sage.rings.ring.Ring.ideal(self, gens, **kwds) > > File ~/github/sage/src/sage/rings/number_field/number_field.py:3749, in > NumberField_generic.fractional_ideal(self, *gens, **kwds) > 3747 else: > 3748 gens = I.gens() > -> 3749 return self._fractional_ideal_class_()(self, gens, **kwds) > > File ~/github/sage/src/sage/rings/number_field/number_field_ideal.py:1814, > in NumberFieldFractionalIdeal.__init__(self, field, gens, coerce) > 1812 gens = gens[0] > 1813 if misc.exists(gens,bool)[0]: > -> 1814 NumberFieldIdeal.__init__(self, field, gens) > 1815 else: > 1816 raise ValueError("gens must have a nonzero element (zero ideal > is not a fractional ideal)") > > File ~/github/sage/src/sage/rings/number_field/number_field_ideal.py:138, > in NumberFieldIdeal.__init__(self, field, gens, coerce) > 136 if len(gens)==0: > 137 raise ValueError("gens must have length at least 1 (zero ideal > is not a fractional ideal)") > --> 138 Ideal_generic.__init__(self, field, gens, coerce) > 139 if field.absolute_degree() == 2: > 140 self.quadratic_form = self._quadratic_form > > File ~/github/sage/src/sage/rings/ideal.py:274, in > Ideal_generic.__init__(self, ring, gens, coerce) > 272 gens = [gens] > 273 if coerce: > --> 274 gens = [ring(x) for x in gens] > 276 gens = tuple(gens) > 277 if len(gens) == 0: > > File ~/github/sage/src/sage/rings/ideal.py:274, in <listcomp>(.0) > 272 gens = [gens] > 273 if coerce: > --> 274 gens = [ring(x) for x in gens] > 276 gens = tuple(gens) > 277 if len(gens) == 0: > > File ~/github/sage/src/sage/structure/parent.pyx:901, in > sage.structure.parent.Parent.__call__() > 899 if mor is not None: > 900 if no_extra_args: > --> 901 return mor._call_(x) > 902 else: > 903 return mor._call_with_args(x, args, kwds) > > File ~/github/sage/src/sage/rings/polynomial/polynomial_element.pyx:12240, > in > sage.rings.polynomial.polynomial_element.ConstantPolynomialSection._call_() > 12238 return > <Element>((<Polynomial>x).constant_coefficient()) > 12239 else: > > 12240 raise TypeError("not a constant polynomial") > 12241 > 12242 cdef class PolynomialBaseringInjection(Morphism): > > TypeError: not a constant polynomial > -- 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/7e86059e-9f55-4568-908c-46460fc9a298n%40googlegroups.com.