A quick question regarding notation and translating it to spoken language in Munkres Let $h : X \rightarrow Y$ be continuous, with $h(x_0) = y_0$ and $h(x_1) = y_1$. Let $\alpha$ be a path in $X$ from $x_0$ to $x_1$, and let $\beta= h \circ \alpha$. Show that
$$\hat{\beta} \circ (h_{x_0})_{*}=(h_{x_1})_{*} \circ \hat{\alpha}$$
This is question 6 out of Munkres Topology Section 52. 
I found a solution online that has

I am having trouble following all of the different notations and what they mean. If anyone can help explain, that would be great. I'm also unsure how to formally say what is happening between each step. That is, I'm not sure how to read out these equations in English instead of just notation.
 A: To show that two functions are the same, we show that they produce the same output when fed the same input.  To that end, let $[f] \in \pi_1(X,x_0)$ be a generic input.  Then
$$  (\hat{\beta}\circ (h_{x_0})_*)([f]) = \hat{\beta}([h \circ f])  $$
because a representative of the loop class $[f]$ passed through the induced function $(h_{x_0})_*$ (that is, $h$, applied to loops in a fundamental group of $X$ based at $x_0$) is the class containing the $h$ image of that loop representative.
$\hat{\beta}$ is the action on the fundamental group of $Y$ based at $y_0$ that moves the base point from $h(x_0) = y_0$ to $h(x_1) = y_1$.  So a loop based at $y_0$ can be turned into a loop starting at $y_1$ by first moving from $y_1$ to $y_0$, performing the loop, then moving back from $y_0$ to $y_1$.  That is, perform the path class $[\beta]$ backwards, then the loop class, then perform the path class $[\beta]$.
$$  = [\overline{\beta}] * [h \circ f] * [\beta]  $$
Since this new path class starts and ends at $y_1$, it is a loop class based at $y_1$.
$$  = [\overline{\beta} * (h \circ f) * \beta]  $$
$[\overline{\beta}]$ is the path class of the $h$ image of $\alpha$ running backwards and $[\beta]$ is the $h$ image of $\alpha$ running forwards.  (It would, perhaps, have been more clear to swap this and the previous step.)
$$  = [(h \circ \overline{\alpha}) * (h \circ f) * (h \circ \alpha)]  $$
This is a sequence of $h$ images of path classes in $X$ : reverse $\alpha$ from $x_1$ to $x_0$, a loop class based at $x_0$ and $\alpha$ from $x_0$ to $x_1$, so we factor out the common application of $h$.  (Note that we should be a little careful that the path (class) "down" in $Y$ pulls back to an honest path (class) "up" in $X$.  The map $h$ need not be injective -- the preimage of a path in $Y$ and a loop in $Y$ that meet at a point may be disjoint in $X$.  But we have been consistent in defining paths and loops in $X$ and making sure that their endpoints join up in $X$, which has forced the joining to work for their images in $Y$.)
$$ = [h \circ (\overline{\alpha} * f * \alpha)]  $$
The thing this $h$ is acting on is a loop class based at $x_1$, so the induced map is $(h_{x_1})_*$ in the fundamental group of $X$ based at $x_1$.
$$ = (h_{x_1})_* ([\overline{\alpha} * f * \alpha])  $$
Now split the concatenated path-loop-path class into those three parts.
$$ = (h_{x_1})_* ([\overline{\alpha}] * [f] * [\alpha])  $$
$\hat{\alpha}$ is the action on the fundamental group of $X$ based at $x_0$ that moves the base point from $x_0$ to $x_1$, which is what the two path classes are doing to that loop class.
$$  = (h_{x_1})_* (\hat{\alpha}([f]))  $$
Finally, as in the first line, we have a composition of functions (with a small typo in the image, a missing hat on $\alpha$).
$$  = ( (h_{x_1})_* \circ \hat{\alpha}) ([f])  \text{.}  $$
Having shown that $\hat{\beta} \circ(h_{x_0})_*$ and $(h_{x_1})_* \circ \hat{\alpha}$ have the same value when fed the same input, we have $\hat{\beta} \circ(h_{x_0})_* = (h_{x_1})_* \circ \hat{\alpha}$ (as functions).
