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.

Reply via email to