- epsilon*epsilon contractions work
authorChristian Bauer <Christian.Bauer@uni-mainz.de>
Thu, 26 Jul 2001 23:28:08 +0000 (23:28 +0000)
committerChristian Bauer <Christian.Bauer@uni-mainz.de>
Thu, 26 Jul 2001 23:28:08 +0000 (23:28 +0000)
commit834bacb25c9427fb03b8f9b34605738fb59202e1
tree11bd7d0f382c224a1b426939dff0e682a06dae70
parent504b90fcaeafe013a6f1b32edcc0d6a51561fc35
- epsilon*epsilon contractions work
- dirac_slash(a, D) now constructs a special kind of clifford object (printed
  as "a\") instead of creating a "a.symbol42*gamma~symbol42" product. This
  helps avoiding problems when doing something like
    ex prop = (dirac_slash(p, D) - m * dirac_ONE());
    ex I = prop * dirac_slash(l, D) * prop;
  where the same dummy index would be used for both p-slash in I. Now it's
  perfectly safe to do this. Dummy indices are only created when taking
  traces or contracting indices. A nice side-effect of this is that "a\*a\"
  immediately gets simplified to a^2.
- The "contraction of symmetric and antisymmetric objects is zero" rule
  in simplify_indexed() has been generalized. Now expressions like
  "epsilon.i.j.k*A.j*A.k" also get simplified to zero (what GiNaC does is
  to assert dummy index exchange symmetry).
ginac/clifford.cpp
ginac/clifford.h
ginac/indexed.cpp
ginac/tensor.cpp