Category of monoids
Cat::Monoid represents the category of monoids.
Cat::Monoid is a non-Abelian semi-group with
a neutral element one (
dom::one) according to the
Must hold the neutral element according to the operation
_invert— Return inverse
isone— Test if element is one
_power— Raise to the
This implementation does "repeated squaring".