if (is_a<diracgamma>(c.op(0))) { // proper dirac gamma object
i = c.op(1);
b = _ex1;
+ } else if (is_a<diracgamma5>(c.op(0))) { // gamma5
+ i = _ex0;
+ b = _ex1;
} else { // slash object, generate new dummy index
varidx ix((new symbol)->setflag(status_flags::dynallocated), ex_to<idx>(c.op(1)).get_dim());
b = indexed(c.op(0), ix.toggle_variance());
if (is_a<clifford>(*other)) {
+ // Contraction only makes sense if the represenation labels are equal
+ if (ex_to<clifford>(*other).get_representation_label() != rl)
+ return false;
+
ex dim = ex_to<idx>(self->op(1)).get_dim();
// gamma~mu gamma.mu = dim ONE