An operation over a type is commutative if for any two objects and of type . Integer addition and set union are commutative, but string concatenation is not.