I suggest extending kron_delta from a two argument to an n-argument function.
The change causes no errors with either the testsuite or the share testsuite.
For one argument, kron_delta signals an error. Apparently, MMA defines
kron_delta(x) = kron_delta(x,0). This, I think, will cause confusion.
Since kron_delta(x) signals an error, a user can assume
kron_delta(x0,...,xn) * kron_delta(y0,..., ym) = kron_delta(x0, ..., xn, y0, ..., ym)
is an identity without checking the number of arguments (if kron_delta(x) = kron_delta(x,0),
it is *not* an identity).
The source code comment:
;; A n-ary Kronecker delta function: kron_delta(n0,n1, ..., nk) simplifies to 1 if
;; (meqp ni nj) is true for *all* pairs ni, nj in (n0,n1, ..., nk); it simplifies to 0 if
;; (mnqp ni nj) is true for *some* pair ni, nj in (n0,n1, ..., nk). Further kron_delta() --> 1
;; and kron_delta(xxx) --> wrong number of arguments error. Thus
;;
;; kron_delta(x0,...,xn) * kron_delta(y0,..., ym) = kron_delta(x0, ..., xn, y0, ..., ym)
;;
;; is an identity.
Examples:
(%i4) kron_delta(1,1,1,1);
(%o4) 1
(%i5) kron_delta(1,1,%pi);
(%o5) 0
(%i6) kron_delta();
(%o6) 1
(%i7) kron_delta(2);
knon_delta: wrong number of arguments.
-- an error. To debug this try: debugmode(true);
Comments? Also, the current user documentation is too complex and wrong.
The new code uses (effectively) is(equal(a,b)) to test for equality, it
does not use sign (at least directly).
--Barton