Re: Grassmann Calculus / Indexed Objects / Simplify

*To*: mathgroup at smc.vnet.net*Subject*: [mg60859] Re: [mg60763] Grassmann Calculus / Indexed Objects / Simplify*From*: "Carl K. Woll" <carl at woll2woll.com>*Date*: Fri, 30 Sep 2005 03:57:58 -0400 (EDT)*References*: <200509280540.BAA08309@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Robert Schoefbeck wrote: > Hello all, > > I want to implement superspace calculations in a mathematica package. > I define (code below) grassmannian theta-variables with upper and lower, > dotted and undotted indices. Having declared (anti)- commutativity > with DeclareOdd i use myTimes to handle multiplications of Superfields. > > Dummy indices are generated by use of Unique[]. All this multiplication > stuff works pretty well but looking at the one but last output i have > the problem that contractions with different dummies are not recognized > as equal. > > My questions are: Is there a way to tell mathematica to keep the > information that indices are equal but forgetting about the name of the > dummy? > The usual approach to your problem is to define a canonicalization function which takes a monomial and rewrites the indices in the monomial in a standard form. Unfortunately, there is no good quick algorithm to compute this standard form. Your problem is complicated by the fact that indices can be both upper or lower, so not only the names of the indices but there position will also need to be put in canonical form. If you have (anti-)symmetries in your indices, even more complexities occur. Ignoring the upper/lower indices and symmetries, one simple but slow algorithm to convert a monomial into a canonical form is: 1. Isolate the tensor quantities in the monomial. 2. Extract the indices. 3. Rename the indices (e.g., if there are 5 indices, call them i_1, i_2, ..., i_5). 4. Generate a monomial for each of the possible permutations of the indices. 5. Sort these monomials, and pick the first one. > I'd also like to pull indices with metrics, something like > > e[a,b]theta[b]=theta[a] > > How should i implement the defining relations for index pulling > (i have vector, and chiral/antichiral spinor indices, color indices and > so on) such that 1) Simplify can handle them? > Instead of using Simplify, why not just use replacement rules? e[a,b]theta[b] /. e[a_,b_] g_?(!FreeQ[#,a|b]) :> If[FreeQ[g,b], g/.a->b, g/.b->a] > any help is welcome, does maybe someone have a sample application of how > to handle indices? > i'd also appreciate any comment on the code. > > robert schoefbeck > > > > > short description: > > OddPQ tests whether an object has odd parity or not > > mytimes handles ,multiplications > Instead of mytimes, why not use ** or one of the other Infix symbols with no definitions like CircleTimes? It will look prettier, which should enhance comprehensibility. [snip] Carl Woll Wolfram Research

**References**:**Grassmann Calculus / Indexed Objects / Simplify***From:*Robert Schoefbeck <schoefbeck@hep.itp.tuwien.ac.at>