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

Hello,

I have a question about the evaluation of a tensor contracted with Gamma matrices. First I defined the indices and Gamma matrices by

{a,b,c,d}::Indices(position=fixed);
{a,b,c,d}::Integer(0..2);
\Gamma{#}::GammaMatrix(metric=\eta);
\eta_{a b}::KroneckerDelta;
C_{a b c}::AntiSymmetric;

Then what I want to evaluate is

ex:= C_{a b c} \Gamma^{a b c};

by using an explicit value:

rl:= [ C_{0 1 2} = \alpha ];

However, performing evaluate(ex, rl); , I got 0, which is different from what I expected to get, 6 \alpha \Gamma^{0 1 2}. Could anyone help me? Many thanks.

in General questions by (680 points)

2 Answers

+1 vote
 
Best answer

To follow-up on this: with the current version of Cadabra in github, you can do e.g.

{a,b,c,d}::Indices(values={0,1,2},position=fixed);
\Gamma{#}::GammaMatrix(metric=\eta);
\eta_{a b}::KroneckerDelta;
C_{a b c}::AntiSymmetric;
ex:= C_{a b c} \Gamma^{a b c};
rl:= { C_{0 1 2} = \alpha };
evaluate(ex, rl);

to produce $$\alpha~ \Gamma^{0 1 2}$$

Note that you need to state values={0,1,2} explicitly in the Indices property (just declaring {a,b,c}::Integer(0..2) does not yet work.

by (65.1k points)
selected by

Thanks for your update, Kasper. I will try it in a more involved example.

+2 votes

At the moment, there are a few things missing which make this cumbersome. The main stumbling block is that if you do not give any components of a tensor, it assumes that all components are zero. That's of course not what you want; \Gamma^{0 1 2} is non-zero, but you simply don't want to state what it is.

There is functionality coming up in 2.1.3 which will handle the above, but you'll need to wait another two weeks or so for that version to be released.

by (65.1k points)

Thanks Kasper! I appreciate your effort into the update and look forward to 2.1.3 :)

...