Ask Your Question

samdehority's profile - activity

2020-02-13 23:47:17 +0200 received badge  Supporter (source)
2020-02-13 23:46:52 +0200 commented answer Acess bracked elements in free lie algebra element?

I went ahead and posted a topic on sage-devel here. Your code works but there is still some unfortunate behavior, namely

sage: a_tree._right == x1
False

which can be worked around via something like

sage: a_tree._right == x1.list()[0][0]
True

Just paying careful attention to which objects are Lyndon basis elements and which are the binary trees. This has worked for my code but it would be way nicer if there was a cleaner way.

2020-02-13 23:02:36 +0200 received badge  Nice Question (source)
2020-02-13 11:17:36 +0200 received badge  Student (source)
2020-02-13 08:39:35 +0200 asked a question Acess bracked elements in free lie algebra element?

I'm trying to access the left and right elements in a free lie algebra element, whose monomials are stored as binary trees. Thus I want a method (like exists in the source for lie_algebra_element) which would return something like

sage:  L = LieAlgebra(QQ, 3, 'x')
sage: x0,x1,x2 = L.gens()
sage: Lyn = FL.Lyndon()
sage: a = Lyn.graded_basis(3)[2]; a
[[x0, x1], x1]
sage: a._left
[x0,x1]
sage: a._right
x1

Of course the last 4 lines are fake. One way of seeing this is the following:

sage: isinstance(a, LyndonBracket)
False
sage: isinstance(a, LieBracket)
False

How do I fix this "the right way" ? My current solution is just to set

sage: a_tree = eval(repr(a)); a_tree
[[x0, x1], x1]

But this feels extremely wrong.

2020-02-13 08:39:35 +0200 asked a question How to access tree information from Free Lie Algebra elements?

I'm trying to access the left and right elements in a free lie algebra element, whose monomials are stored as binary trees. Thus I want a method (like exists in the source for lie_algebra_element) which would return something like

sage:  L = LieAlgebra(QQ, 3, 'x')
sage: sx0,x1,x2 = L.gens()
sage: Lyn = FL.Lyndon()
sage: a = Lyn.graded_basis(3)[2]; a
[[x0, x1], x1]
sage: a._left
[x0,x1]
sage: a._right
x1

Of course the last 4 lines are fake. One way of seeing this is the following:

sage: isinstance(a, LyndonBracket)
False
sage: isinstance(a, LieBracket)
False

How do I fix this "the right way" ? My current solution is just to set

sage: a_tree = eval(repr(a)); a_tree
[[x0, x1], x1]

But this feels extremely wrong.