note that reduction associativity is implementation-dependent (fixes #4046)