I know many books would have proofs for the QR algorithm, but I wonder if there is a concise one. (e.g. 2-3 pages in PDF)
Here is a statement. Let's assume that any real $n$ by $n$ matrix $A$ can be decomposed as
$$A=QR$$
where $Q$ is orthogonal and $R$ is upper triangular.
Now, suppose that $A$ is an orthogonally diagonalizable (real symmetric) $n$ by $n$ matrix. Let $A_0=A$. For each $k=1,2,\cdots$, by the assumption,
$$A_{k-1} = Q_kR_k$$
for orthogonal $Q_k$ and upper-triangular $R_k$. Now let
$$A_k=R_kQ_k.$$
(I'll call this procedure of generating $A_k$ for $k=1,2,\cdots$, the QR algorithm.) The above equation yield
$$R_k={Q_k}^TA_{k-1}$$
and
$$A_k={Q_k}^TA_{k-1}Q_k.$$
So we have
$$A_k = \left(Q_1\cdots Q_k\right)^T A\left(Q_1\cdots Q_k\right)$$
for all $k=1,2,\cdots$.
Prove that $A_k$ approaches to a diagonal matrix $D$ as $k\to\infty$. (Then we can get a eigen-decomposition $D=QAQ^T$. That is, previously we only knew that $A$ is orthogonally diagonalizable. After the proof, we have a numerical algorithm to find eigenvalues and eigenvectors.)