[step:Define multiplication by concatenation followed by reduction]
For reduced words $u,v\in F(S)$, define their product $u\cdot v\in F(S)$ by
\begin{align*}
u\cdot v:=R(uv),
\end{align*}
where $uv$ denotes concatenation of the two finite sequences.
We record the reduction-in-context identity needed for associativity. If $p,q\in W(A)$ and $p'$ is obtained from $p$ by deleting one adjacent inverse pair, then the preceding claim gives
\begin{align*}
R(pq)=R(p'q).
\end{align*}
Iterating this statement over finitely many deletions gives the same conclusion when $p'$ is obtained from $p$ by finitely many adjacent inverse-pair deletions.
We next justify that $R(w)$ is obtained from $w$ by finitely many adjacent inverse-pair deletions. We prove this by induction on the length $n$ of $w=(a_1,\dots,a_n)\in W(A)$. For $n=0$, the assertion is immediate because $R(e)=e$. Suppose it holds for the prefix $w'=(a_1,\dots,a_{n-1})$, so $R(w')$ is obtained from $w'$ by finitely many adjacent inverse-pair deletions. During the last stack step, either $R(w')a_n$ is already reduced, in which case $R(w)=R(w')a_n$, or the last letter of $R(w')$ is $a_n^{-1}$, in which case $R(w)$ is obtained from $R(w')a_n$ by deleting that final adjacent inverse pair. Hence $R(w)$ is obtained from $w=w'a_n$ by finitely many adjacent inverse-pair deletions.
Consequently, for all words $w,z\in W(A)$,
\begin{align*}
R(wz)=R(R(w)z),
\end{align*}
because one may replace $w$ by $R(w)$ inside the larger word $wz$ through finitely many adjacent inverse-pair deletions. More generally, if $z'$ is obtained from $z$ by finitely many adjacent inverse-pair deletions, then
\begin{align*}
R(wz)=R(wz'),
\end{align*}
because the same deletion-in-context claim applies with the fixed prefix $w$ included in the surrounding word.
Now let $u,v,t\in F(S)$. Using the prefix normalization identity for the first product and the suffix deletion-in-context identity for the second product, we compute
\begin{align*}
(u\cdot v)\cdot t
&=R(R(uv)t)\\
&=R((uv)t),\\
u\cdot(v\cdot t)
&=R(uR(vt))\\
&=R(u(vt)).
\end{align*}
Concatenation of finite sequences is associative, so $(uv)t=u(vt)$. Hence
\begin{align*}
(u\cdot v)\cdot t=u\cdot(v\cdot t).
\end{align*}
Thus the operation $\cdot$ is associative.
[/step]