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.