## Description

An ordered monoid is a multiplicative monoid together with an ordering of its elements. The ordering is required to be compatible with the multiplication in the sense that if x < y then x z < y z. The class of all ordered monoids is

OrderedMonoid.

The reason for making a separate class for ordered monoids is that monoid rings can be implemented more efficiently for them - an element of the monoid ring can be stored as a sorted list, each element of which is a pair consisting of an element of the monoid and a coefficient. See PolynomialRing.

A free commutative ordered monoid can be created with monoid.