Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Nested Commutators


On 20 Jun 2005, at 18:21, Shug Boabby wrote:

> thanks andrzej, this does seem helpful... i have bookmarked it and am
> reading it now. am i to understand that i should be using **  
> instead of
> . to do the noncommutative multiplication?
>
> could you please give me a demo of your functions for the above  
> algebra
> and also showing the simplification of undefined nested commutators.
> the simplification of nested commutators using the jacobi  
> identities is
> quite important.
>
>

First note that I use the fucntion name Bracket[X,Y] where others use  
Commutator[X,Y] or Comm[X,Y] etc. I am used to thinking of the Lie  
algebra operation as the Bracket (corresponding to Times) while the  
result of the operation is a commutator (corresponding to product).

For your algebra the definitions:

Bracket[A, B] = B;
Bracket[A, C] = C;
Bracket[B, C] = D;
Bracket[_, _] = 0;

immediately give:


Bracket[A,Bracket[A,Bracket[A,B]]]

B

=
Bracket[A,Bracket[B,C]]

0

As for using the Jacobi identities for undefined nested commutator:  
the functions I wrote for Melih do not do that as they were intended  
for a different purpose, namely computing Casimir matrices for Lie  
algebra defined by specifying the action of the bracket on  
generators. One possible way to change this is would be to define the  
Bracket in the "undefined" cases by means of NonCommuativeMultiply:

Bracket[X_, Y_] := X ** Y - Y ** X;

But doing this with my will cause an infinite loop because they are  
written so as to try convert Y**X to X**Y-Bracket[X,Y]. But you coudl  
try usign just these definitions:

Bracket[0, X_] := 0
Bracket[X_Plus, Y_] := Block[{Bracket}, Distribute[Bracket[X, Y]]];
Bracket[X_, Y_Plus] := Block[{Bracket}, Distribute[Bracket[X, Y]]];
Bracket[a_?NumericQ*X_, Z_] := a*Bracket[X, Z];
Bracket[Z_, a_?NumericQ*X_] := a*Bracket[Z, X];
Bracket[X_Symbol, Y_Symbol] /;
       Not[OrderedQ[{X, Y}]] := -Bracket[Apply[Sequence, Sort[{X, Y}]]];
Bracket[X_, X_] = 0;
Bracket[Z_Symbol, X_ ** Y_] := X ** Bracket[Z, Y] + Bracket[Z, X] ** Y;
Unprotect[NonCommutativeMultiply];
x_ ** (a_?NumericQ*y_) := a*(x ** y);
(a_?NumericQ*x_) ** y_ := a*(x ** y);
NonCommutativeMultiply[X_Plus, Y_] :=
     Block[{NonCommutativeMultiply},
       Distribute[NonCommutativeMultiply[X, Y]]];
NonCommutativeMultiply[X_, Y_Plus] :=
     Block[{NonCommutativeMultiply},
       Distribute[NonCommutativeMultiply[X, Y]]];
0 ** X_ = 0;
X_ ** 0 = 0;
Protect[NonCommutativeMultiply];

Now defining:

Bracket[A, B] = B;
Bracket[A, C] = C;
Bracket[B, C] = D;
Bracket[A, D] = 0;
Bracket[B, D] = 0;
Bracket[C, D] = 0
Bracket[X_, Y_] := X ** Y - Y ** X;



will give


Bracket[A,Bracket[A,Bracket[A,B]]]

B


Bracket[A,Bracket[B,C]]

0

But also:


Bracket[Bracket[X,Y],Z]+Bracket[Bracket[Y,Z],X]+Bracket[Bracket[Z,X],Y]

0

Of course this may not be what you want because other expressions in  
terms of undefined brackets will now all be converted to expression  
in terms of NonCommutativeMultiply. However, the basic idea is quite  
flexible and can be adapted to many purposes and probably also to yours.
I hope you will find this of some help.

Andrzej Kozlowski

Chiba, Japan






  • Prev by Date: Re: Re: can anyone solve this equation?
  • Next by Date: Re: Problems with my first package: Statistics`Common`RegressionCommon`BestFitParameters instead of BestFitParameters
  • Previous by thread: Re: Nested Commutators
  • Next by thread: Re: Nested Commutators