I need the variables of a polynomial c in InfinitePolynomialRing(SR) as an 
element of that ring (rather than as an element of the PolynomialRing).

I understand that polynomials are hard, but does anybody see a workaround?

Martin

sage: R.<a> = InfinitePolynomialRing(SR)
sage: c = 3*a[0]
sage: c.variables()[0].parent()
Multivariate Polynomial Ring in a_1, a_0 over Symbolic Ring
sage: R(c.variables()[0])
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In [9], line 1
----> 1 R(c.variables()[Integer(0)])

File ~/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 ~/sage/src/sage/structure/coerce_maps.pyx:163, in 
sage.structure.coerce_maps.DefaultConvertMap_unique._call_()
    161             print(type(C), C)
    162             print(type(C._element_constructor), 
C._element_constructor)
--> 163         raise
    164 
    165 cpdef Element _call_with_args(self, x, args=(), kwds={}) noexcept:

File ~/sage/src/sage/structure/coerce_maps.pyx:158, in 
sage.structure.coerce_maps.DefaultConvertMap_unique._call_()
    156 cdef Parent C = self._codomain
    157 try:
--> 158     return C._element_constructor(x)
    159 except Exception:
    160     if print_warnings:

File ~/sage/src/sage/rings/polynomial/infinite_polynomial_ring.py:988, in 
InfinitePolynomialRing_sparse._element_constructor_(self, x)
    985 # By now, x or self._P are not libsingular. Since 
MPolynomialRing_polydict
    986 # is too buggy, we use string evaluation
    987 try:
--> 988     return sage_eval(repr(x), self.gens_dict())
    989 except (ValueError, TypeError, NameError):
    990     raise ValueError("cannot convert %s into an element of %s - no 
conversion into underlying polynomial ring" % (x, self))

File ~/sage/src/sage/misc/cachefunc.pyx:2329, in 
sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__()
   2327 if self.cache is None:
   2328     f = self.f
-> 2329     self.cache = f(self._instance)
   2330 return self.cache
   2331 

File ~/sage/src/sage/rings/polynomial/infinite_polynomial_ring.py:1278, in 
InfinitePolynomialRing_sparse.gens_dict(self)
   1263 @cached_method
   1264 def gens_dict(self):
   1265     """
   1266     Return a dictionary-like object containing the infinitely many
   1267     ``{var_name:variable}`` pairs.
   (...)
   1276         a_5
   1277     """
-> 1278     return GenDictWithBasering(self, InfiniteGenDict(self.gens()))

File ~/sage/src/sage/rings/polynomial/infinite_polynomial_ring.py:560, in 
GenDictWithBasering.__init__(self, parent, start)
    558 while hasattr(P, 'base_ring') and (P.base_ring() is not P):
    559     P = P.base_ring()
--> 560     D = P.gens_dict()
    561     if isinstance(D, GenDictWithBasering):
    562         self._D.extend(D._D)

File ~/sage/src/sage/structure/category_object.pyx:287, in 
sage.structure.category_object.CategoryObject.gens_dict()
    285 """
    286 if copy:
--> 287     return dict(self.__gens_dict())
    288 else:
    289     return self.__gens_dict()

File ~/sage/src/sage/misc/cachefunc.pyx:2329, in 
sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__()
   2327 if self.cache is None:
   2328     f = self.f
-> 2329     self.cache = f(self._instance)
   2330 return self.cache
   2331 

File ~/sage/src/sage/structure/category_object.pyx:261, in 
sage.structure.category_object.CategoryObject._CategoryObject__gens_dict()
    259 def __gens_dict(self):
    260     cdef dict v = {}
--> 261     for x in self._defining_names():
    262         v[str(x)] = x
    263     return v

File ~/sage/src/sage/misc/cachefunc.pyx:2329, in 
sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__()
   2327 if self.cache is None:
   2328     f = self.f
-> 2329     self.cache = f(self._instance)
   2330 return self.cache
   2331 

File ~/sage/src/sage/structure/category_object.pyx:407, in 
sage.structure.category_object.CategoryObject._defining_names()
    405         ((1/2, 0, 0), (0, 1, 0))
    406     """
--> 407     return self.gens()
    408 
    409 
#################################################################################################

File ~/sage/src/sage/structure/parent_gens.pyx:119, in 
sage.structure.parent_gens.ParentWithGens.gens()
    117 if self._gens is not None:
    118     return self._gens
--> 119 self._gens = tuple(self.gen(i) for i in range(self.ngens()))
    120 return self._gens
    121 

File ~/sage/src/sage/structure/parent_gens.pyx:103, in 
sage.structure.parent_gens.ParentWithGens.ngens()
    101 # Derived class *must* define ngens method.
    102 def ngens(self):
--> 103     check_old_coerce(self)
    104     raise NotImplementedError("Number of generators not known.")
    105 

File ~/sage/src/sage/structure/parent_gens.pyx:78, in 
sage.structure.parent_gens.check_old_coerce()
     76 cdef inline check_old_coerce(parent.Parent p) noexcept:
     77     if p._element_constructor is not None:
---> 78         raise RuntimeError("%s still using old coercion framework" 
% p)
     79 
     80 

RuntimeError: Symbolic Ring still using old coercion framework

-- 
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/28ab13a6-02ca-45df-b022-2f96d1b71a98n%40googlegroups.com.

Reply via email to