fix call of superclass reduce on UnaryOp and BinaryOp
perform reduce in most constructors; reduction rules added for Product