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.

Reply via email to