SemiGroup, Monoid, etc.
Abstract Set, SemiGroup, Monoid, etc.