We've already seen that a set with the additional structure of a binary operation is called a *semigroup* if the operation is *associative* and that a semigroup with an *identity* is called a *monoid*.

The integers under addition is an example of such a monoid (with 0 as the identity) and so is the set of strings under string concatenation (with the empty string as the identity).

However, unlike the integers under addition, there is no notion of an *inverse* in string concatenation.
For every integer *a* there is an integer *b* such that *a* + *b* = 0 (the identity element). *b* is said to be the **inverse** of *a*.

The monoid of strings under string concatenation has no such concept of inverses. You can't concatenate an arbitrary string with some other string to get back to the empty string.

Monoids with inverses effectively have a function which maps *a* to f(*a*) such that for all *a* in the set, the binary operation applied to *a* and f(*a*) results in the identity element. For integers under addition, f is such that f(*x*) = -*x*.

A monoid whose elements all have inverses is called a **group**.

So the integers under addition form a *group*. The strings under string concatenation do not.

**UPDATE**: next post

Tweet

The original post was in the category: poincare_project but I'm still in the process of migrating categories over.