MathGroup Archive 1999

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

Search the Archive

FW: How to do Lie Algebras in Mathematica...

  • To: mathgroup at smc.vnet.net
  • Subject: [mg20789] FW: [mg20751] How to do Lie Algebras in Mathematica...
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Thu, 11 Nov 1999 00:22:56 -0500
  • Sender: owner-wri-mathgroup at wolfram.com

I would like to add a few corrections and improvements to my Lie algebra
code before. First, a bug correction.  My previous code will not expand
expressions of the form:

Bracket[X,Y+Z]

where only one of the arguments has the head Plus. This is easily fixed by
replacing the line:

Bracket[X_Plus, Y_Plus] := Block[{Bracket}, Distribute[Bracket[X, Y]]]

by the following two:


Bracket[X_Plus, Y_] := Block[{Bracket}, Distribute[Bracket[X, Y]]];

Bracket[X_, Y_Plus] := Block[{Bracket}, Distribute[Bracket[X, Y]]];

Secondly, for some purposes it may be better not to add the Jacobi-Identity.
For example, we migh want to test if the bracket defined on the generators
of a vector space  satisifes the Jacobi identity. To do so we of course
should not make the Jacobi identity into a rule for Bracket. Let's see ho
wall this works in a simple case:

In[1]:=
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_, y_] /; 
      Sort[{x, y}] =!= {x, y} := -Bracket[Apply[Sequence, Sort[{x, y}]]];
Bracket[X_, X_] = 0;

In[7]:=
Bracket[e, h] = 2e; Bracket[f, h] = -2f; Bracket[e, f] = h;

Next, we define scalars m,n,p,q,r,s,t,u,v to be Numeric:

In[8]:=
NumericQ[m] = True; NumericQ[n] = True; NumericQ[p] = True;
NumericQ[q] = True; NumericQ[r] = True; NumericQ[s] = True;
NumericQ[t] = True; NumericQ[u] = True; NumericQ[v] = True;

We consider three general elements in the vector space generated by e,f,h:

In[9]:=
x = m*e + n*h + p*f; y = q*e + r*h + s*f; z = t*e + u*h + v*f;

Now we can check if the Jacobi identity holds:

In[10]:=
Bracket[Bracket[x, y], z] + Bracket[Bracket[y, z], x] +
  Bracket[Bracket[z, x], y]
Out[10]=
0

So the elements e,f,h with the Bracket defined as above do indeed generate a
Lie algebra.

-- 
Andrzej Kozlowski
Toyama International University
JAPAN
http://sigma.tuins.ac.jp


> From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
To: mathgroup at smc.vnet.net
> Date: Thu, 11 Nov 1999 01:23:05 +0900
> To: <melih at ks.uiuc.edu>, <mathgroup at smc.vnet.net>
> Subject: [mg20789] FW: [mg20751] How to do Lie Algebras in Mathematica...
> 
> Here is one quick attempt. We simply define a Lie algebra axiomatically
> using a bracket operation just as one would do in an introductory math
> course on the subject:
> 
> 
> First we want the bracket to be bi-linear:
> 
> In[1]:=
> Bracket[X_Plus, Y_Plus] := Block[{Bracket}, Distribute[Bracket[X, Y]]]
> 
> In[2]:=
> Bracket[a_?NumericQ*X_, Z_] := a*Bracket[X, Z]
> 
> In[3]:=
> Bracket[Z_, a_?NumericQ*X_] := a*Bracket[Z, X]
> 
> 
> next anti-commutativity
> 
> In[3]:=
> Bracket[X_, X_] = 0;
> 
> In[4]:=
> Bracket[x_, y_] /;
> Sort[{x, y}] =!= {x, y} := -Bracket[Apply[Sequence, Sort[{x, y}]]]
> 
> Finally the Jacobi identity:
> 
> 
> In[5]:=
> Bracket /: 
> Bracket[Bracket[x_, y_], z_] + Bracket[Bracket[y_, z_], x_] +
> Bracket[Bracket[z_, x_], y_] = 0;
> 
> (This is not a minimal system of axioms but seems convenient in this case)
> 
> Now we only need to define the Bracket on generators, e.g.
> 
> In[6]:=
> Bracket[e, h] = 2e; Bracket[f, h] = -2f; Bracket[e, f] = h;
> 
> And we can now do Lie algebra computations like:
> 
> In[7]:=
> Bracket[3f + 2h, 5e - f + 11h]
> Out[7]=
> -20 e - 70 f - 15 h
> 
> 
> -- 
> Andrzej Kozlowski
> Toyama International University
> JAPAN
> http://sigma.tuins.ac.jp
> 
> 
> 
> 
> 
>> From: Melih Sener <melih at ks.uiuc.edu>
To: mathgroup at smc.vnet.net
>> Organization: TBG/Beckman Institute
>> Date: Wed, 10 Nov 1999 00:17:57 -0500
>> To: mathgroup at smc.vnet.net
>> Subject: [mg20789] [mg20751] How to do Lie Algebras in Mathematica...
>> 
>> 
>> Hi...
>> 
>> Lets say I want to generate the Lie Algebra [of say su(3)]
>> on Mathematica without going to explicitly
>> constucting matrices for the generators...
>> 
>> So I want Mathematica to "learn" relations like:
>> 
>> [G_ij , G_kl] = (something)*G_mn
>> 
>> and I want to define a "commutator product" [A , B]
>> which is distributive, linear etc.
>> 
>> So that I can produce expressions for things like
>> [a*G_12+b*G_23, c*G_33+d*G_13] in an easy way...
>> [ "Distribute" is useful... but I don't know how to
>> make mathematica learn to factor coefficents of generators
>> outside the commutator...]
>> 
>> What is the best way to do this?
>> 
>> Thanks,
>> 
>> Melih
>> 
> 
> 




  • Prev by Date: Re: Re: Re:Color of GridLines
  • Next by Date: FW: How to do Lie Algebras in Mathematica...
  • Previous by thread: Re: How to do Lie Algebras in Mathematica...
  • Next by thread: FW: How to do Lie Algebras in Mathematica...