for orthogonal-only indices
return _ex0();
}
} else if (idx1.is_symbolic() && idx1.is_co_contra_pair(idx2)) {
- return Dim();
+ if (idx1.is_orthogonal_only())
+ return Dim() - idx1.get_dim_parallel_space();
+ else
+ return Dim();
}
}
return this -> hold();
// at least one off-diagonal
return _ex0();
}
- } else if (idx1.is_symbolic() &&
- idx1.is_co_contra_pair(idx2)) {
- return Dim() - 2;
+ } else if (idx1.is_symbolic() && idx1.is_co_contra_pair(idx2)) {
+ if (idx1.is_orthogonal_only())
+ return Dim() - idx1.get_dim_parallel_space();
+ else
+ return Dim();
}
}