How to prove that convolution on real sequences is associative? Given two real sequences $\{ a_n \}$ and $\{ b_n \}$, where $n \ge 0$, the convolution operation (denoted $\ast$) is defined as $\{ c_n \} = \{ a_n \} \ast \{ b_n \}$, where $c_n = \sum_{k=0}^{n} a_k b_{n-k}$. I want to prove that convolution is associative, i.e., $(\{ a_n \} \ast \{ b_n \}) \ast \{ c_n \} = \{ a_n \} \ast (\{ b_n \} \ast \{ c_n \})$.
According to definition, I obtain two double-sum formulas:
$$(\{ a_n \} \ast \{ b_n \}) \ast \{ c_n \} = \sum_{k=0}^{n} \big( (\sum_{j=0}^{k} a_j b_{k-j}) c_{n-k} \big) = \sum_{k=0}^{n} \sum_{j=0}^{k} (a_j b_{k-j} c_{n-k}) \big.$$ 
and, 
$$\{ a_n \} \ast (\{ b_n \} \ast \{ c_n \}) = \sum_{k=0}^{n} \big( a_k (\sum_{j=0}^{n-k} b_j c_{n-k-j}) \big) = \sum_{k=0}^{n} \sum_{j=0}^{n-k} (a_k b_j c_{n-k-j}).$$
I am able to "guess" that the two double-sum formulas are just two different ways of summing a collection of triple-multiplication in the form of $a_i b_j c_k$. However, I failed to show their equivalence formally by manipulating the double-sum. Could you give me some hints (does the trick of "change of variables" work here)? 
 A: Define $\{d_n\}_n$ to be the result of the first of your sum. Let $\{ e_n \}_n$ the second one. It is enough to prove that for each $n \in \mathbb{N},  \ d_n = e_n$. Start by recalling that finite addition over $\mathbb{N}$ is associative, distributive and commutative (related to the multiplication obviously). Since the sums involved are finite, these property are still valid, (this introduction is made to justify certain passages of the reasoning). The main point is to prove that 
$$\left( a * b \right)_n = \sum_{i+j=n} a_ib_j $$
(which is obvious)
then rewrite the two sums in order to get $$d_n = \sum_{i+j=n} \sum_{k+y=i} a_kb_yc_j = \sum_{i+j=n}\sum_k a_kb_{i-k}c_j $$ $$e_n = \sum_{i+j=n} \sum_{t+s=j} a_ib_tc_s = \sum_{i+j=n}\sum_s a_ib_{j-s}c_s $$
I made obviously change of indexes just to make the two sums pretty similar. Now the conclusion follow by noting that the indexes range over $\{ 1, \dots , n \}$ and using commutativity and the other properties listed above 
A: I'd like to present another solution in form of a straight forward computation with one substitution.
First, define $q := p + r$. Then
\begin{align}
(a*(b*c))[n] &= \sum_{p=0}^{N-1}a[p](b*c)[n-p] = \sum_{p=0}^{N-1}a[p] \sum_{r=0}^{N-1}b[r]c[(n-p)-r] \\
&= \sum_{p=0}^{N-1} \sum_{r=0}^{N-1} a[p]b[r]c[(n-p)-r] \\
&= \sum_{p=0}^{N-1} \sum_{r=0}^{N-1} a[p]b[(p+r)-p]c[(n-(p+r)]\\
&\text{We now have $(p+r)$ in both vectors $b$ and $c$ and substitute with $q$}:\\
&= \sum_{q=0}^{N-1} \sum_{p=0}^{N-1} a[p]b[q-p]c[n-q] \\
&= \sum_{q=0}^{N-1} (a*b)[q]c[n-q] = ((a*b)*c)[n].
\end{align}
