I found two problems in the 'combine(_)' algorithm.
The first is that it does not take into account the commuting rules of the objects:
{m,n,o,p}::Indices.
{x,y,w,z}::Indices.
a::ImplicitIndex(a^{m}).
b::ImplicitIndex(b_{m}).
{a{#},b{#}}::AntiCommuting.
ex:= a b;
explicit_indices(_);
combine(_);
The output for this code is the following.
a b
a^{m} b_{m}
(b a)
The second problem is that it seems that it is not possibile to make some indices implicit, unless they are in the order lower-upper position, respectively. For example:
{\alpha, \beta, \gamma, \delta}::Indices.
a::ImplicitIndex(a^{\alpha}).
M::ImplicitIndex(M_{\alpha \beta}).
ex:= a M a;
explicit_indices(_);
combine(_);
The output in this case is:
a M a
a^{\alpha} M{\alpha \beta} a^{\beta}
a^{\alpha} M{\alpha \beta} a^{\beta}
combine(_) does not do anything to the expression.
Thanks for your help in advance.