Hi,

I am dealing with fields which have SU(2) spin indices, and so would like to use the `EpsilonTensor`

$\epsilon_{a b}$ as the metric to raise/lower/contract indices. I define the spin indices like this

```
{a,b,c}::Indices(position=fixed).
{a,b,c}::Integer(1..2).
```

Then I define the EpsilonTensor as a metric

```
\delta::KroneckerDelta;
\epsilon_{a b}::EpsilonTensor(delta=\delta);
\epsilon_{a b}::Metric;
```

Now, I am able to contract the spin indices such that $\epsilon_{a b} \epsilon^{a c} = \epsilon^{b}{}_{c}$ by using `eliminate_metric`

, but I can't seem to reduce this further to a kronecker delta, like $\epsilon^{b}{}_{c} = \delta^{b}{}_{c}$. For example,

```
ex:=\epsilon_{a b} \epsilon^{a c};
eliminate_metric(_);
```

gives me $\epsilon_{b}{}^{c}$ correctly. But how can I reduce this to $\delta_{b}{}^{c}$?

I tried using the algorithm `epsilon_to_delta`

, but I can only make it work when all indices are lower, or when all indices are upper, but not with mixed indices. Maybe I am missing something.

One solution to this problem is to just define a substitution that does this epsilon to delta conversion, but I was wondering if there is a more canonical way to do this?

Thank you for the help, and thanks for the excellent work on Cadabra!