Kronecker Delta

*To*: mathgroup at smc.vnet.net*Subject*: [mg7505] Kronecker Delta*From*: "Arturas Acus" <acus at itpa.lt>*Date*: Sat, 7 Jun 1997 03:48:36 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Dear Group, Almost a week I try to find solution to the problem, which seems rather simple from the first view. But now I am not sure the solution exist at all. In particular I wish to implement usual properties of Kronecker delta function, which manipulates on indices. Namely, it should replace *all* indices A with index B if KD[A,B] appears inside Times. Obvious solution: KD/: Literal[Times[any_,KD[A_,B_]]]:=ReplaceAll[Times[any],A->B]/;Not[ FreeQ[Times[any],A,Infinity]] is wrong, because there can be more than two dummy indices. To make things clear I should say that I am working on the SU(2) manifold, where summation over index C like: D_{C,_}*ClebschGordan[{j1_,C},{_},{_}]*(-1)^C is natural. Here D_{} stands for Wigner D matrix. This additional phase (which sometimes appears but sometimes not) makes things quite complicated. For example at least in one case the code above is incorrect: Times[(-1)^A,Plus[D_{A,_}*KD[A,B],any]]. It is clear that the code will leave (-1)^A unchanged. It seems, that to do correct substitution I always need to know all expression, but not a part. Of course, I can always define additional function, say EliminateKD, and apply to all expression. Bu this is bad solution, because KD appears in various stages of calculations. So I should continuosly apply the function. Any ideas? Arturas Acus Institute of Theoretical Physics and Astronomy Gostauto 12, 2600,Vilnius Lithuania E-mail: acus at itpa.lt Fax: 370-2-225361 Tel: 370-2-612906