Showing $[(fg)h]_n = [f(gh)_n]$ in the linear algebra $F^\infty$

I am studying the proof of associativity of the multiplication in a linear algebra, from Hoffman and Kunze's Linear Algebra, 2nd edition. I am not understanding one of the steps taken to simplify a summation.

The linear algebra $F^\infty$ is the vector space of sequences in $F$. The elements of $F^\infty$ are of the form $f = (f_0,f_1,f_2,\dots)$. The product of $f,g \in F^\infty$ is defined by $$(fg)_n=\sum_{i=0}^nf_ig_{n-i},\,n=0,1,2,...$$

We then have (on page 118): $$\begin{align} [(fg)h]_n &= \sum_{i=0}^n(fg)_ih_{n-i} \\ &=\sum_{i=0}^n \left(\sum_{j=0}^if_jg_{i-j}\right)h_{n-i}. \end{align}$$ What I do not understand are the following two steps: $$\begin{align} \phantom{[(fg)h]_n} &=\sum_{i=0}^n \sum_{j=0}^if_{i}g_{i-j}h_{n-i} \\ &=\sum_{j=0}^nf_j\sum_{i=0}^{n-j}g_ih_{n-i-j}, \end{align}$$ which gives the result $$\phantom{[(fg)h]_n}=\sum_{j=0}^nf_j(gh)_{n-j} = [f(gh)]_n.$$

I can see the substitution of $f_i$ for $f_j$ after expanding the sum, but I do not understand the next step. Am I supposed to be able to see these steps intuitively (without expanding the sum)? What is going on in the substitution of $n$ for $n-j$?


The line $$ = \sum_{i=0}^n \sum_{j=0}^i f_i g_{i-j}h_{n-i} $$ has a typo. It should be $f_j$, not $f_i$.


To see why $$ \sum_{i=0}^n \sum_{j=0}^i f_j g_{i-j}h_{n-i} = \sum_{j=0}^n f_j \sum_{i=0}^{n-j} g_i h_{n-i-j} $$ we need to ask ourselves, for each fixed $j$, $0 \leq j \leq n$, which terms on the left-hand side sum contain $f_j$?

For each $i \geq j$, there is a term $f_jg_{i-j} h_{n-i}$. These are the only terms that contain $f_j$. So, by collecting terms that contain $f_j$ for each $j = 0,\dots,n$, we can re-write the left-hand side as $$ \sum_{j = 0}^n f_j \sum_{i = j}^n g_{i-j} h_{n-i}. $$ Now, we change the variable $i$ in the second summation by $i\to i + j$. This gives us the right-hand side in the above equation.