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.