Any Set with Associativity, Left Identity, Left Inverse is a Group
Your proof seems correct to me, and it also seems that you understood what is the problem with the axioms. The usual proof works just fine in the following case:
Let $(G, *)$ be a semi-group. Suppose
(1) $\exists e \in G$ such that $\forall a \in G,\ ae = a$;
(2) $\forall a \in G, \exists a^{-1} \in G$ such that for all $e\in G$ satisfying 1, $aa^{-1} = e$.
It is then obvious, in this case, that the element $e$ in (1) is unique: Indeed, since $G$ is nonempty (by (1)), let $g\in G$ be arbitrary. Then, if $e_1$ and $e_2$ satisfy (1), we have $e_1=gg^{-1}=e_2$.
The next case is more interesting:
Let $(G, *)$ be a semi-group. Suppose
(1) $\exists e \in G$ such that $\forall a \in G,\ ae = a$;
(2) $\forall e\in G$ satisfying (1) and $\forall a \in G, \exists a_e^{-1} \in G$ such that $aa_e^{-1} = e$.
The problem is to actually prove the uniqueness of the unit. Let's prove it:
Let $e$ and $f$ satisfy (1). Then $$f=ee_f^{-1}=(ee)e_f^{-1}=e(ee_f^{-1})=ef=e$$ Therefore, $e=f$, and we're actually in the first (and simpler) case.
I think the conditions could be more clearly stated as follows: let a set $G$ be equipped with an operation ${*}:G\times G\to G$ (a binary operation), an element $e\in G$ (a nullary operation) and a map $i:G\to G$ (a unary operation), such that, for all $x,y,z\in G$ one has
- $x*(y*z)=(x*y)*z$ (associativity)
- $e*x=x$ ($e$ is a left inverse)
- $i(x)*x=e$ (the operation $i$ produces a left inverse, for $e$, of its argument)
Show that $(G,e,i)$ is a group, in other words that $e$ is also a right neutral element, and that $i$ also produces a right inverse (for $e$) of its argument.
(For one thing, upon first reading of your question it was not clear to me that your "for all $a\in G$" applied all the way to the end of the sentence; instead I thought you wanted to prove that if one specific $a$ has a left inverse (for $e$) then it also has a right inverse. And that just is not true; think of functions on an infinite set under composition, which is associative and has a two-sided neutral element, yet some (injective but not surjective) elements have a left inverse but no right inverse.)
As for a proof, I would as a matter of style stick to strict expression manipulation, and avoid "such and so expression has an inverse, apply it to both ends" (though this can be made precise, you did not even say if "applying" is on the left or right). You will than see from the example in the parenthesised remark above that it is necessary to use the inverse property for some other element than $x$, for which element $i(x)$ seems the best candidate (your proof does this implicitly).
I also think it easiest to start with the right-inverse property, which can be done as follows: $$ x*i(x)=e*(x*i(x)) = (i(i(x))*i(x))*(x*i(x)) = i(i(x))*((i(x)*x)*i(x))\\ =i(i(x))*(e*i(x))=i(i(x))*i(x) = e. $$ Then showing $e$ is also right neutral is easy $$ x*e = x*(i(x)*x) =(x*i(x))*x = e*x=x,$$ where the third equality uses the right-inverse property just proved.