Problem: Show $(P\to Q)\land (Q\to R)\equiv (P\to R)\land[(P\leftrightarrow Q)\lor (R\leftrightarrow Q)]$
Source: As was noted in the original post, this problem is from Daniel J. Velleman's book How to Prove It. The exercise may be found as problem 7 (a) on page 54 (second edition). I got a copy of this book, and I saw that some exercises have solutions in the book. The exercise directly before this one had the solution, "Either make a truth table or reason as follows: [...]". This makes me think the author had a truth table solution in mind for this exercise, as a purely direct proof by using a chain of logical equivalences has proven to be exceedingly difficult. I am very interested in obtaining a solution that uses a chain of logical equivalences similar to my answer to this problem. I have spent several hours working on this problem now, but I have not succeeded at all--I cannot seem to "pull the right-hand side out of the left-hand side", as this seems the most natural approach. For anyone interested, I have presented a truth table without the fluff below.
Truth table solution:
$$ \boxed{ \begin{array}{c|c|c|c} P & Q & R & (P\to Q)\land (Q\to R) & (P\to R)\land[(P\leftrightarrow Q)\lor (R\leftrightarrow Q)] \\ \hline T & T & T & T & T \\ T & T & F & F & F \\ T & F & T & F & F \\ T & F & F & F & F \\ F & T & T & T & T \\ F & T & F & F & F \\ F & F & T & T & T \\ F & F & F & T & T \end{array}} $$
Chain of equivalences proof: It seems that the main issue is "coaxing" the right-hand side out of the left-hand side. For instance, by using distributivity, I can see that somehow $(P\to Q)\land(Q\to R)$ is equivalent to $$ [(P\to R)\land(P\to Q)\land(Q\to P)]\lor[(P\to R)\land(R\to Q)\land(Q\to R)].\tag{1} $$ I have tried numerous times trying to manipulate the left-hand side into the expression given in $(1)$, but I have not succeeded so far--everything is such an enormous mess. Perhaps there is some strategy involved in using equivalences (in terms of ease of manipulation); for example, should one use $$ P\leftrightarrow Q\equiv (P\land Q)\lor(\neg P\land\neg Q) $$ or $$ P\leftrightarrow Q\equiv (P\to Q)\land (Q\to P) $$
There are several algorithms to convert classical propositional sentences into normal forms. I'll pretend to be as dumb as a computer and convert the two sentences into their disjunctive normal form in a systematic way.
\begin{align} & {(P \to R) \wedge [(P \leftrightarrow Q) \vee (R \leftrightarrow Q)]}\\ & = (\neg P \vee R) \wedge [(P \wedge Q) \vee (\neg P \wedge \neg Q) \vee (R \wedge Q) \vee (\neg R \wedge \neg Q)] \\ & = [(\neg P \vee R) \wedge P \wedge Q] \vee [(\neg P \vee R) \wedge \neg P \wedge \neg Q] \vee \\ & \phantom{{} = {}} [(\neg P \vee R) \wedge R \wedge Q] \vee [(\neg P \vee R) \wedge \neg R \wedge \neg Q] \\ & = [P \wedge Q \wedge R] \vee [(\neg P \wedge \neg Q) \vee (\neg P \wedge \neg Q \wedge R)] \\ & \phantom{{} = {}} \vee [(\neg P \wedge Q \wedge R) \vee (Q \wedge R)] \vee [\neg P \wedge \neg Q \wedge \neg R] \\ & = (P \wedge Q \wedge R) \vee [(\neg P \wedge \neg Q \wedge \neg R) \vee (\neg P \wedge \neg Q \wedge R)] \vee\\ & \phantom{{}={}} [(\neg P \wedge Q \wedge R) \vee (P \wedge Q \wedge R)] \vee [\neg P \wedge \neg Q \wedge \neg R] \\ & = (P \wedge Q \wedge R) \vee (\neg P \wedge \neg Q \wedge R) \vee (\neg P \wedge \neg Q \wedge \neg R) \vee (\neg P \wedge Q \wedge R). \end{align} \begin{align} & (P \to Q) \land (Q \to R) \\ & = (\lnot P \lor Q) \land (\lnot Q \lor R) \\ & = [\lnot P \land \lnot Q] \lor [\lnot P \land R] \lor [Q \land R] \\ & = [(\lnot P \land \lnot Q \land R) \lor (\lnot P \land \lnot Q \land \lnot R)] \lor [(\lnot P \land Q \land R) \lor (\lnot P \land \lnot Q \land R)] \lor \\ & \phantom{{}={}} [(P \land Q \land R) \lor (\lnot P \land Q \land R)] \\ & = (\lnot P \land \lnot Q \land R) \lor (\lnot P \land \lnot Q \land \lnot R) \lor (\lnot P \land Q \land R) \lor (P \land Q \land R). \end{align}
Now you should see how the general method works. If you want to redo it without pretending to be as dumb as a computer, some steps can be skipped. In fact, the final form doesn't have to be expanded out in full. You can just try to make both expressions look like this:
$$ (Q \land R) \vee (\lnot P \land \lnot Q). $$