Hi Simon, 

Shouldn't 0 in R return true as well?

Thank you

On Wednesday, March 29, 2017 at 8:14:28 AM UTC-4, Simon King wrote:
>
> Hi! 
>
> On 2017-03-28, Adam Mullins <[email protected] <javascript:>> wrote: 
> > Hi, I create a free algebra like such: 
> > 
> > R.<q1,q2,q3> = FreeAlgebra(Integers(2)) 
> > 
> > When I try to check if the constant polynomial 1 is in R, it returns 
> false. 
> > But this should return true. 
> > i.e. 1 in R returns false 
> > 
> > It also returns false when I write the code 
> > 0 in R 
> > 
> > Is this a bug? 
>
> I believe it is a bug. By default, "1 in R" defaults to "R(1)==1 is True 
> and doesn't raise an error, which is the case here. 
>   sage: R.<x,y,z> = FreeAlgebra(Integers(2)) 
>   sage: R(1) == 1 
>   True 
>
> The problem is that someone decided to override the default __contains__ 
> method for CombinatorialFreeModule, so that only equality of parents is 
> tested (a very bad notion of containment, IMHO!). 
>
> If it is OK for you to only work with graded homogeneous elements, you 
> could use the letterplace implementation of free algebras: 
>   sage: R.<x,y,z> = FreeAlgebra(Integers(2), 
>   implementation='letterplace') 
>   sage: 1 in R 
>   True 
> but note that really only homogeneous elements can be created: 
>   sage: 1+x 
>   ... 
>   ArithmeticError: Can only add elements of the same weighted degree 
>
> Third solution *should* be to implement a free algebra as a path algebra. 
> It would have the advantage of allowing inhomogenous elements. But alas, 
> it inherits from CombinatorialFreeModule and thus provides the same bug. 
>
> I will open a trac ticket for it. 
>
> Best regards, 
> Simon 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to