Yes, I actually figured that out after some time. We've opened a ticket here : http://trac.sagemath.org/ticket/18653 and I'm on it: doing basically what you're saying.
Best Viviane 2015-06-09 12:32 GMT-05:00 John H Palmieri <[email protected]>: > sage: list(X) > [((1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, > 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0), > 1)] > > It looks like the tuple is a concatenation of 6 (one for each factor of X) > tuples of length 6 (one for each generator): (1,0,0,0,0,0), (0,1,0,0,0,0), > etc., representing a, b, a, c, c, b. So you could take that tuple, break it > into smaller tuples of length 6 to get each factor. > > Actually, after looking at further examples, the length of the tuple is > unpredictable: if you first evaluate a**9, then any for element defined > after that, the tuple will have length 9*6. Strange. Anyway, you should be > able to break the tuple into length 6 chunks to get each factor, treating > (0,0,0,0,0,0) as 1. > > John > > On Tuesday, June 9, 2015 at 9:23:59 AM UTC-7, Viviane Pons wrote: >> >> The thing is: we actually need this specific implementation which is much >> quicker for what we're doing. So I'm going to look closer at the object and >> probably open a ticket to allow for such basic operation. >> >> Best >> >> Viviane >> >> 2015-06-09 2:24 GMT-05:00 Nicolas Borie <[email protected]>: >> >>> Le 09/06/2015 06:50, Viviane Pons a écrit : >>> >>>> Hi everyone, >>>> >>>> I'm doing this: >>>> >>>> sage: FreeA.<a,b,c,d,e,f> = FreeAlgebra(QQ,implementation="letterplace") >>>> sage: P = a*b*a*c*c*b + a*b*a*d*d*b + a*c*a*d*d*c + b*c*b*d*d*c >>>> sage: X = P.lm() >>>> sage: X >>>> a*b*a*c*c*b >>>> >>>> And now I would like a way to "cut" my element X into two factors of a >>>> given size. Something like >>>> >>>> sage: u,v = X[:2],X[2:] >>>> >>>> with then u=a*b and v = a*c*c*d >>>> >>>> except this doesn't work (no __getitem__ on X). I have looked a bit, >>>> but I cannot find how to do this even though it seems quite a natural >>>> operation. I must say, I don't even understand the datastructure of X, >>>> list(X) doesn't give me something I can easily read or transform into a >>>> word or anything... >>>> >>>> If someone knows about this, I would appreciate the help. >>>> >>> Hello, >>> >>> This feature seems to be strongly wrapped... You can access the data >>> structure by iterating on element : >>> >>> >>> ************************************************************************************************** >>> sage: FreeA.<a,b,c,d,e,f> = FreeAlgebra(QQ,implementation="letterplace") >>> sage: P = a*b*a*c*c*b + a*b*a*d*d*b + a*c*a*d*d*c + b*c*b*d*d*c >>> sage: for basis_elt, coef in P: >>> ....: print list(basis_elt), coef >>> ....: >>> [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, >>> 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0] 1 >>> [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, >>> 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0] 1 >>> [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, >>> 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0] 1 >>> [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, >>> 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0] 1 >>> >>> ************************************************************************************************** >>> >>> Depending what is your need, perhaps one of the following will be easier >>> to manipulate : >>> >>> ************************************************************************************************** >>> sage: W = Words(['abcdef']) >>> sage: A = W.algebra(QQ) >>> sage: A >>> Free module generated by Words over {'abcdef'} over Rational Field >>> sage: A = FreeMonoid(6, 'a,b,c,d,e,f').algebra(QQ) >>> sage: A >>> Free module generated by Free monoid on 6 generators (a, b, c, d, e, f) >>> over Rational Field >>> >>> ************************************************************************************************** >>> >>> Note that the first one using Words produce a strange bug on my machine >>> (old sage 6.4.beta2) >>> >>> ************************************************************************************************** >>> sage: W = Words(['abcdef']) >>> sage: W.algebra(QQ) >>> >>> --------------------------------------------------------------------------- >>> AttributeError Traceback (most recent call >>> last) >>> <ipython-input-30-c6db62886943> in <module>() >>> ----> 1 W.algebra(QQ) >>> >>> /home/nborie/sage-6.3/local/lib/python2.7/site-packages/sage/structure/parent.so >>> in sage.structure.parent.Parent.__getattr__ >>> (build/cythonized/sage/structure/parent.c:7213)() >>> >>> AttributeError: 'Words_over_OrderedAlphabet' object has no attribute >>> 'algebra' >>> sage: W.al >>> W.algebra W.alphabet >>> sage: W.algebra(QQ) >>> Free module generated by Words over {'abcdef'} over Rational Field >>> >>> ************************************************************************************************** >>> >>> The method algebra works only after I asked for a tab completion on W... >>> Never see that before.... >>> >>> Following the feature you choose, you will perhaps have to add a product >>> method (product_on_basis or whatever, most of the time, the categories does >>> it already for you...) >>> >>> Cheers, >>> Nicolas. >>> >>> >>> -- >>> 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 [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/sage-devel. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > 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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. > -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.
