Traits

A set with an associative operation is a Semigroup.