Welcome to Cadabra Q&A, where you can ask questions and receive answers from other members of the community.
+1 vote


For a calculation I'm trying to do, I have an 11d space whose (flat/tangent space) indices are split as follows

$M = (a, \mu, 11)$

$M = 0, 1, \ldots, 11$ (the full 11d flat index) $a = 0, 1, 2, 3, 4, 5$ (a 6d subspace) $\mu = 6, 7, 8, 9$ (a 4d subspace)

(11 is separated out)

What I'd like to do is have split_index split an expression of the form $T_M S^M$ (or $T_M S_M$) into

$T_{a}S^{a} + T_{\mu}S^{\mu} + T_{11}S^{11}$

So far, what I have is

ex:=T_{M} S^{M};
split_index(_, $M,a,\mu$);

the output is

$T_a S^a + T_\mu S^\mu$

whereas of course what I'd like is

$T_a S^a + T_\mu S^\mu + T_{11} S^{11}$

I know that split_index can be used to split into only two subsets.

So, I tried the following


but this too produces the same output as before.

How can a three (or more) subset split be achieved?

Any ideas, suggestions are welcome, including criticism of (any redundancy in?) the above code! Thanks!

in General questions by (320 points)

1 Answer

+3 votes
Best answer

I would first split off the '11' from the 'M,N,P' index, and then split the remaining index once more. Something like

{a,b,c,d,e}::Indices(sixD, parent=tenD);
{\mu,\nu,\rho}::Indices(fourD, parent=tenD);

ex:= T_{M} S^{M};
split_index(_,$M, m, 11$);

$$T_{m} S^{m} + T_{11} S^{11}$$

split_index(_, $m, a, \mu$);

$$T_{a} S^{a} + T_{\mu} S^{\mu} + T_{11} S^{11}$$

Note that this requires introducing a separate set of indices for the 10d subspace which you are then immediately splitting into 6+4.

by (64.9k points)
selected by

Thanks @kasper!