Replacing 0 with self.zero() works perfectly, thank you! Best, Akos
On Thursday, February 3, 2022 at 11:34:43 PM UTC+1 Akos M wrote: > Thanks for the feedback. > > Indeed, defined as such, C is a broken object - this was just the smallest > example where I could reproduce the error. > > I was hoping that it should be possible to access the module elements > without referring to 1, or multiplication. > I would like to define multiplication later in the definition of some > algebraic structure, but still inherit the methods from the category. > (Similarly to > https://doc.sagemath.org/html/en/thematic_tutorials/coercion_and_categories.html > ) > > In particular, the error originally appeared in the form of > "if x == 0:" > where x is an element of the module, as should be 0 (now coerced..). > > Best, > Akos > On Thursday, February 3, 2022 at 10:10:29 PM UTC+1 vdelecroix wrote: > >> Now I am thinking about it, I am not sure it is a bug. You did >> not defined any algebra structure (neither the unit nor the >> product on the basis). C is definitely a broken object. >> >> However, it would make sense for C(0) not to call C(1). >> >> Vincent >> >> Le 03/02/2022 à 21:49, Akos M a écrit : >> > Thanks, I created - my first - ticket. >> > https://trac.sagemath.org/ticket/33285#ticket >> > >> > Once the ticket is (eventually) resolved, how do I update sage to >> involve >> > the resolution? >> > >> > Thanks, >> > Akos >> > >> > On Thursday, February 3, 2022 at 1:39:10 PM UTC+1 vdelecroix wrote: >> > >> >> It is definitely a bug. Do you know how to open >> >> a ticket on the trac server ? >> >> >> >> The infinite loop comes from C.one() calling C(1) >> >> calling C.one()... When you specify a category >> >> the inheritance is different and this explains >> >> the difference of behaviour. >> >> >> >> Best >> >> Vincent >> >> >> >> Le 03/02/2022 à 11:29, Akos M a écrit : >> >>> >> >>> >> >>> Hi, >> >>> >> >>> The snippet >> >>> D = CombinatorialFreeModule(ZZ, [1,2]) D(0) >> >>> >> >>> works fine, however >> >>> C = CombinatorialFreeModule(ZZ, [1,2], >> category=AlgebrasWithBasis(ZZ)) >> >> C(0) >> >>> >> >>> gets into an infinite loop: >> >>> File >> >>> >> >> >> "/opt/sagemath-9.0/local/lib/python3.7/site-packages/sage/categories/magmas.py", >> >> >> >>> line 488, in one return self(1) File "sage/structure/parent.pyx", >> line >> >> 900, >> >>> in sage.structure.parent.Parent.__call__ >> >>> (build/cythonized/sage/structure/parent.c:9218) return mor._call_(x) >> File >> >>> "sage/categories/map.pyx", line 1694, in >> >>> sage.categories.map.FormalCompositeMap._call_ >> >>> (build/cythonized/sage/categories/map.c:11607) x = f._call_(x) File >> >>> "sage/categories/morphism.pyx", line 549, in >> >>> sage.categories.morphism.SetMorphism._call_ >> >>> (build/cythonized/sage/categories/morphism.c:8489) cpdef Element >> >>> _call_(self, x): File "sage/categories/morphism.pyx", line 568, in >> >>> sage.categories.morphism.SetMorphism._call_ >> >>> (build/cythonized/sage/categories/morphism.c:8439) return >> >> self._function(x) >> >>> File >> >>> >> >> >> "/opt/sagemath-9.0/local/lib/python3.7/site-packages/sage/categories/unital_algebras.py", >> >> >> >>> line 70, in from_base_ring return self.one()._lmul_(r) File >> >>> "sage/misc/cachefunc.pyx", line 2310, in >> >>> sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ >> >>> (build/cythonized/sage/misc/cachefunc.c:12712) self.cache = >> >>> f(self._instance) >> >>> >> >>> Why is this? Is this expected behaviour? >> >>> (Also asked on: >> >>> >> >> >> https://ask.sagemath.org/question/60903/possible-bug-specifying-category-messes-up-coercion/ >> >> >> ) >> >>> >> >>> Thanks, >> >>> Akos >> >>> >> >> >> > >> > -- 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/04a2ba26-a673-407d-aafb-dc44bcac02bdn%40googlegroups.com.