Proving $[(p\leftrightarrow q)\land(q\leftrightarrow r)]\to(p\leftrightarrow r)$ is a tautology without a truth table I came across the following problem in a book:

Show that if $p, q$, and $r$ are compound propositions such that $p$ and $q$ are logically equivalent and $q$ and $r$ are logically equivalent, then $p$ and $r$ are logically equivalent. 

The book's solution certainly makes sense:

To say that $p$ and $q$ are logically equivalent is to say that the truth tables for $p$ and $q$ are identical; similarly, to say that $q$ and $r$ are logically equivalent is to say that the truth tables for $q$ and $r$ are identical. Clearly if the truth tables for $p$ and $q$ are identical, and the truth tables for $q$ and $r$ are identical, then the truth tables for $p$ and $r$ are identical. Therefore $p$ and $r$ are logically equivalent. 

I decided to "symbolically translate" the problem in the book:

Show that $[(p\leftrightarrow q)\land(q\leftrightarrow r)]\to(p\leftrightarrow r)$ is a tautology.

I wrote out a truth table and everything checks out, as expected (and as mentioned in the book's solution). My question is whether or not there is a more "algebraic" solution using equivalences (not resorting to CNF or DNF).
Any ideas?

Here is a proof which is slightly more algebraic than the "just look at the truth tables" one while not ballooning out into something lengthy and potentially unreadable:
\begin{array}l
(p \leftrightarrow q) \land (q \leftrightarrow r) \\
= \{\mbox{definition of $\leftrightarrow$}\} \\
(p \rightarrow q) \land (q \rightarrow p) \land (q \rightarrow r) \land (r \rightarrow q) \\
= \{\mbox{commutativity of $\land$}\} \\
(p \rightarrow q) \land (q \rightarrow r) \land (r \rightarrow q) \land (q \rightarrow p) \\
\implies \{\mbox{transitivity of $\rightarrow$}\} \\
(p \rightarrow r) \land (r \rightarrow p) \\
= \{\mbox{definition of $\leftrightarrow$}\} \\
p \leftrightarrow r
\end{array}
The only step in this chain that you may consider ill-founded is the "transitivity of $\rightarrow$" step; but we can pretty easily prove that separately if that's wanted:
\begin{array}l
(p \rightarrow q) \land (q \rightarrow r) \\
= \{\mbox{definition of $\rightarrow$}\} \\
(\lnot p \lor q) \land (\lnot q \lor r) \\
= \{\mbox{distributivity}\} \\
(\lnot p \land \lnot q) \lor (\lnot p \land r) \lor (q \land \lnot q) \lor (q \land r) \\
\implies \{\mbox{weakening}\} \\
\lnot p \lor \lnot p \lor (q \land \lnot q) \lor r \\
= \{\mbox{simplification}\} \\
\lnot p \lor r \\
= \{\mbox{definition of $\rightarrow$}\} \\
p \rightarrow r
\end{array}
The line marked "simplification" actually uses a number of algebraic facts -- but I think they are clear enough to the human reader.
