**This is an old revision of the document!**

`ExpandAndEliminate`

expands out product of sums and positive integer powers and permanently eliminates metric and Kronecker deltas.

`ExpandAndEliminate`

is equivalent to sequential applying`Expand & EliminateMetrics`

but works faster since applies`EliminateMetrics`

at each level of expand procedure.

`ExpandAndEliminate`

is equal to`Expand[EliminateMetrics] & EliminateMetrics`

.

- When no metric tensors or Kronecker deltas involved,
`ExpandAndEliminate`

works same as`Expand`

.

Expand product of sums and eliminate metrics:

def t = '(A_a*g_mn + A_m*g_an + A_n*g_am)*(A^a*g^mn + A^m*g^an + A^n*g^am)'.t println ExpandAndEliminate >> t

> 6*A_{n}*A^{n}+3*d^{n}_{n}*A_{m}*A^{m}

When no metric tensors or Kronecker deltas involved, `ExpandAndEliminate`

works same as `Expand`

:

println Expand >> '(A_m^m + 1)**3'.t

> 3*A_{m}^{m}*A_{a}^{a}+A_{m}^{m}*A_{a}^{a}*A_{b}^{b}+1+3*A_{b}^{b}

`ExpandAndEliminate`

is equivalent to sequential applying `Expand & EliminateMetrics`

but works faster since it applies `EliminateMetrics`

at each level of expand procedure. One can check the advantages of `ExpandAndEliminate`

in the following example with random tensors:

//create random generator, which generates // random tensors consisting of metric and A_m def randomTensor = new RandomTensor() randomTensor.clearNamespace() randomTensor.addToNamespace('g_mn'.t, 'A_m'.t) def a, b //loop to warm up JVM for (def i in 0..1000) { //next random tensor def t = randomTensor.nextTensorTree(4, 3, 8, '_a'.si) //this will typically 10 times faster timing { a = ExpandAndEliminate >> t } //than this timing { b = (Expand & EliminateMetrics) >> t } assert a == b println '' }The sample output will looks like:

Time: 14 ms. Time: 88 ms. Time: 52 ms. Time: 553 ms. Time: 40 ms. Time: 577 ms.

- Related guides: Applying and manipulating transformations, List of common transformations
- Related transformations: Expand, EliminateMetrics
- JavaDocs: ExpandTransformation
- Source code: ExpandTransformation.java