Le samedi 21 février 2015 23:09:24 UTC+1, Jonas Jermann a écrit : > > Hi > > It's a good idea but it won't work (in fact the _element_constructor_ > does accept zero correctly in my case). The coercion framework _first_ > tries to find a common parent and _then_ the rest happens. >
At least in the cases I've tried (free modules as implemented in #15916), if no common parent is found, there is then a conversion of 0 via _element_constructor_, followed by the addition via the _add_ (single underscore) of the module elements. Do I understand correctly that 0 + whatever first calls sage.structure.element.RingElement.__add__, which starts by if have_same_parent(left, right): (line 1570 of sage/structure/element.pyx); if this fails, it performs return coercion_model.bin_op(left, right, add) (line 1579) and the latter shall invoke your parent._element_constructor_ to convert 0 to your zero element. I am not completely sure about this... (this is my understanding why it works in my case). Eric. > Best > Jonas > > On 21.02.2015 22:59, Eric Gourgoulhon wrote: > > Hi, > > > > Le samedi 21 février 2015 21:59:05 UTC+1, Jonas Jermann a écrit : > > > > > > The parent is a vector space / module not a ring. Every vector space > > contains zero, so in my opinion from a conceptual point of view > > adding zero should not change the parent space. > > > > However since it views 0 as an integer and not as (an element) the > zero > > subspace (unless we forcefully map it there) it seems hard to change > > this behavior. :-( > > > > > > It seems that a possible way to have 0 + MyElement work even if ZZ does > > not coerce to MyElement.parent() is to have > > MyElement.parent()._element_constructor_ accept 0 (i.e. Integer(0)) as > > an argument and return the zero element of your vector space / module > > for such an argument. Am I correct? > > > > Eric. > > > > -- 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 post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.