Hello,
I'm trying ti define abstract mathematical unevaluated objects such as e[1], e[1,2], e[1,2,3], etc. There are rules for these objects, such as
e[]=1
e[1,1]=e[2,2]=..=e[i,i]=e[]=1
e[1,2]=e[1,2]
e[2,1]=-e[1,2]
e[1,2,3]=e[1,2,3]
e[2,1,3]=-e[1,2,3]
e[2,3,1]=e[1,2,3],
etc.
The number of argument inside e is arbitrary but I'm first trying with two, to further generalize. I found that the following code works pretty well for this case:
e[] := 1
e[i_Integer, i_Integer] := e[]
e[i_Integer, j_Integer] := -e[j, i] /; i != j && i > j
However the following one, which should produce the same result, but is more general and useful when trying to generalize to more than two arguments, fails:
e[] := 1
e[i_Integer, i_Integer] := e[]
e[i_Integer, j_Integer] := Signature[{i, j}] e @@ Sort[{i, j}] /; i != j
since a Recursion Limit is exceeded.
Can anyone give me some clue about why this happens? Thanks a lot in advance,
Jose L. Aragon