Hello everybody,
I have a problem with simplify_indexed(). This function tries, among other
things, if some terms cancel after symmetrizing with respect to dummy
indices. It then checks if the symmetrization really lessened the number
of terms and if this is the case, returns the result of the
symmetrization. However, this may miss opportunities for simplification.
Imagine that we have a sum of four terms, say,
T = t1 + t2 + t3 + t4,
and that after symmetrization t1 and t2 cancel. However, it turns out that
symmetrization yields six terms. We have
T_symm = t3,1 + ... + t3,6 + t4,1 + ... + t4,6.
This contains twelve terms, which is more than the original four ones, and
therefore, is not accepted as a simplification. However, as a (more or
less) intelligent human being I do not find it very difficult to use the
just presented information to think of a simpler expression for T.
Furthermore, even if, in such a case, symmetrization yields a smaller
number of terms, the result may be somewhat awkward. What if I have
objects carrying a three-dimensional index for which I use symbols a, b,
c, etcetera and a four-dimensional index for which I use symbols mu, nu,
sig, etcetera. The symmetrized result may have latin letters in places
where I would normally expect greek ones and vice versa.
Both problems sketched above are solved if one uses the symmetrized terms
for determining what cancels but the original terms to get the, hopefully,
simplified result. A patch is attached that is supposed to make this
happen.
Greetings,
Chris Dams