Define GENERALIZED_NONCOMMUTATIVE_SUM(op, a1, ..., aN) as follows:
a1 when N is 1, otherwise
op(GENERALIZED_NONCOMMUTATIVE_SUM(op, a1, ..., aK),
op(GENERALIZED_NONCOMMUTATIVE_SUM(op, aM, ..., aN))
for any K where 1 < K+1 = M ≤ N.
Define GENERALIZED_SUM(op, a1, ..., aN) as GENERALIZED_NONCOMMUTATIVE_SUM(op, b1, ..., bN) where b1, ..., bN may be any permutation of a1, ..., aN.