Monoid where every element is left-invertible equals group

Left-invertibility version
If $$(M,*)$$ is a monoid with identity element (neutral element) $$e$$, such that for every $$a \in M$$, there exists $$b \in M$$ such that $$b * a = e$$, then $$M$$ is a group under $$*$$.

Right-invertibility version
If $$(M,*)$$ is a monoid with identity element (neutral element) $$e$$, such that for every $$a \in M$$, there exists $$b \in M$$ such that $$a * b = e$$, then $$M$$ is a group under $$*$$.

Stronger facts

 * Semigroup with left neutral element where every element is left-invertible equals group

Facts used

 * 1) uses::Equality of left and right inverses in monoid

Proof idea (left-invertibility version)
We need to show that every element of the group has a two-sided inverse. To do this, we first find a left inverse to the element, then find a left inverse to the left inverse. Thus, the left inverse of the element we started with has both a left and a right inverse, so they must be equal, and our original element has a two-sided inverse.

Proof details (left-invertibility version)
Given: A monoid $$(M,*)$$ with identity element $$e$$ such that every element is left invertible. An element $$a \in M$$

To prove: $$a$$ has a two-sided inverse.

Proof: Suppose $$b$$ is a left inverse for $$a$$. Let $$c$$ be a left inverse for $$b$$. Then, $$b$$ has $$a$$ as a right inverse and $$c$$ as a left inverse, so by Fact (1), $$a = c$$. Thus, $$a * b = b * a = e$$, so $$a$$ has a two-sided inverse $$b$$.

Proof details (right-invertibility version)
Given: A monoid $$(M,*)$$ with identity element $$e$$ such that every element is right invertible. An element $$a \in M$$

To prove: $$a$$ has a two-sided inverse.

Proof: Suppose $$b$$ is a right inverse for $$a$$. Let $$c$$ be a right inverse for $$b$$. Then, $$b$$ has $$a$$ as a left inverse and $$c$$ as a right inverse, so by Fact (1), $$a = c$$. Thus, $$a * b = b * a = e$$, so $$a$$ has a two-sided inverse $$b$$.