*AllContractions*, which should be much faster. You can now compute all possible contractions of your favorite tensors in a reasonable amount of time (provided there aren't too many indices to contract over), like so:

In: AllContractions[ RiemannCD[a,b,c,d]RiemannCD[e,f,g,h] ];The last two contractions are actually not independent, but are related to each other via the Bianchi identity. But that's a multi-term symmetry, and unfortunately

Out: { \( R^2, R_{ab} R^{ab}, R_{abcd} R^{abcd}, R_{acbd} R^{abcd} \) }

*AllContractions*doesn't take those into account.

Other functions, such as

*TensorCollect*and

*SolveConstants*should also see some speed improvements. And besides the usual bugfixes there are nice new functions such as

*SolveTensors*(which can solve a system of linear tensorial equations in terms of tensors) and

*IndexConfigurations*. The latter gives all possible independent index configurations of an expression. For example:

In: IndexConfigurations[ metric[a,b]metric[c,d] ];Here's another example:

Out: { \(g^{ab} g^{cd}, g^{ac} g^{bd}, g^{ad} g^{bc}\) }

In: IndexConfigurations[ RiemannCD[a,b,c,d] ];Note that the three different index configurations of the Riemann tensor are actually not independent due to the Bianchi identity. Like

Out: { \(R^{abcd}, R^{acbd}, R^{adbc} \) }

*AllContractions*,

*IndexConfigurations*doesn't take these multi-term symmetries into account.

xTras 1.0.6 has some more improvements; check the Changelog for details. As usual, the new version can be downloaded from its www.xact.es/xtras.