Is this a proof? (Of a simple result in abelian groups.) In Topics in Algebra by Israel Nathan Herstein, there is a problem (2nd edition, page 35,
number 4) that asks:

If $G$ is a group in which $(a \cdot b)^i = a^i \cdot b^i$ for three consecutive integers $i$
  for all $a, b \in G $, show that $G$ is abelian.

In other words, one can use, together with the usual rewrite rules for a group, the following
three:
$$ \begin{align}
   \tag{1} (a \cdot b)^i     & = a^i \cdot b^i         \\
   \tag{2} (a \cdot b)^{i+1} & = a^{i+1} \cdot b^{i+1} \\
   \tag{3} (a \cdot b)^{i+2} & = a^{i+2} \cdot b^{i+2}
\end{align} $$
I will now put forward my attempt at a proof. My aim is to determine if I understand proof writing and whether I could compose a solid proof of a simple enough theorem.
Before departing towards the main goal, I saw it fit to establish the following two intermediate
results:
Lemma 1: $\quad$ $ b \cdot (a \cdot b)^n \cdot a = (b \cdot a)^{n+1} $
(I think the problem is marked with a star due to this part. It appears to me the creative core
of the proof, as it requires something more than rewriting by rules.)
Proof: $\quad$
$(a \cdot b)^n$ is merely a shorthand notation for a sequence $a \cdot b \cdot \> \dots \> \cdot a
\cdot b$ of appropriate length, witn $a$ and $b$ alternating. Prepending $b$ and appending $a$, we
get $b \cdot a \cdot \> \dots \> \cdot b \cdot a$ — also an alternating sequence,
evidently $= (b \cdot a)^{n+1}$.
$\quad\square$
Lemma 2: $\quad$ $ (a \cdot b)^i = (b \cdot a)^i $
Proof: $\quad$
If we show that $ b \cdot (a \cdot b)^i \cdot a = b \cdot (b \cdot a)^i \cdot a $, we may then
cancel equal prefixes and suffixes and thus reach the goal. So let us show:
$$ \begin{align}
b \cdot (a \cdot b)^i \cdot a & = b \cdot (b \cdot a)^i \cdot a                             \\
(b \cdot a)^{i+1}             & = \dots                         & \text{— Lemma 1.}         \\
            \dots             & = b \cdot b^i \cdot a^i \cdot a & \text{— 1 left to right.} \\
            \dots             & = b^{i+1} \cdot a^{i+1}         & \text{— Power notation.}  \\
            \dots             & = (b \cdot a)^{i+1}             & \text{— 2 right to left.} \\
\end{align}
$$
$\quad\square$
Now, let us return to the main goal.
Theorem: $\quad$ $ b \cdot a = a \cdot b $
Proof: $\quad$
$$ \tag{Part 1} \begin{align}
    (a \cdot b)^{i+2} & = a^{i+2} \cdot b^{i+2} & \text{— 3 per se.} \\
    a \cdot b \cdot (a \cdot b)^i \cdot a \cdot b & = \dots & \text{— Power notation.} \\
    \dots & = a \cdot a \cdot a^i \cdot b^i \cdot b \cdot b & \text{— Power notation.} \\
    \dots & = a \cdot a \cdot (a \cdot b)^i \cdot b \cdot b & \text{— 1 right to left.} \\
    b \cdot (a \cdot b)^i \cdot a & = a \cdot (a \cdot b)^i \cdot b & \text {— Cancel equal prefixes & suffixes.} \\
\end{align} $$
$$ \tag{Part 2} \begin{align}
    (b \cdot a)^{i+1} & = \dots & \text{— Lemma 1.} \\
    (b \cdot a)^i \cdot (b \cdot a) & = \dots & \text{— Power notation.} \\
    \dots & = a \cdot a^i \cdot b^i \cdot b & \text{— 1 right to left.} \\
    \dots & = a^{i+1} \cdot b^{i+1} & \text{— Power notation.} \\
    \dots & = (a \cdot b)^{i+1} & \text{— 2 right to left.} \\
    \dots & = (a \cdot b)^i \cdot (a \cdot b) & \text {— Power notation.} \\
\end{align} $$
Now, as, per lemma 2, $ (a \cdot b)^i = (b \cdot a)^i $, we may cancel these prefixes.
$\quad\square$
My questions:


*

*Is this a proof?

*Is it correct?

*Can it be improved?


The proof isn't fully rigourous as you write something like $x^n = x....x$, which is how we think of $x^n$ and essentially how we use it, but it's not rigorous.
To make the intuition of $x...x$ precise, the main tool is induction (and things we proved before)
For instance, for lemma 1, here's one way to proceed by induction 
For $n=0$, you are claiming $b (ab)^0 a = (ba)^1$. But $(ab)^0 = 1$ and $(ba)^1 = ba$ so by the fact that $1$ is neutral we are done.
Assume the result is known for $n$ (the result being "for all $a,b$, $b(ab)^n a = (ba)^{n+1}$" : it is important to have "for all $a,b$" in the hypothesis !) and let's try to prove it for $n+1$.
So let $a,b$ and compute : $b(ab)^{n+1}a = b a (ba)^n b a$ by using the induction hypothesis on $(b,a)$ (that's where we use " for all "). 
Thus $b(ab)^{n+1} a = (ba)(ba)^n (ba) = (ba)^{n+2}$ (by some result we should prove earlier that $x^nx^m = x^{n+m}$, again by induction), and this is what we wanted for $n+1$.
By induction, we are done.
