3 Proving Pappus

We’re now ready to prove Pappus’ theorem. But remember, this proof is the first, not very exciting proof; the dramatic proof won’t be until Section 5. Let’s restate the theorem once more, this time giving it the projective context it deserves. By the way, I wouldn’t recommend computationally checking every step of this proof for yourself; not only could that become fairly tedious, it also wouldn’t necessarily provide much insight. The reason this proof is being presented is to illustrate its structure: what kind of arguments make it up. We’ll discuss this structure once the proof is done. OK, let’s go.

Pappus’ theorem. (homogeneous coordinate proof)

Let \(\{A,B,C\}\) and \(\{X,Y,Z\}\) be two distinct triples of collinear points in \(\mathbb{RP}^{2}\) such that the lines \((A,B)\) and \((X,Y)\) don’t coincide. Then the points \(\gamma = (A,Y) \cap (B,X)\), \(\beta = (A,Z) \cap (C,X)\) and \(\alpha = (B,Z) \cap (C,Y)\) are also collinear.

Proof. As \((A,C) \neq (X,Z)\) the points \(A,X,\alpha\) and \(\gamma\) are in general position. We can therefore apply Proposition B and get a basis \(\mathcal{B}\) of \(\mathbb{R}^{3}\) with respect to which \(A,X,\alpha\) and \(\gamma\) have homogeneous coordinates \((1,0,0)\), \((0,1,0)\), \((0,0,1)\) and \((1,1,1)\) respectively.

Let \((a,b,c), (d,e,f),(g,h,i),(j,k,l)\) and \((m,n,o)\) be the homogeneous coordinates of \(B,C,Y,Z\) and \(\beta\) respectively (using the basis \(\mathcal{B}\)). Thanks to Proposition A we can translate the collinearities from the theorem’s hypothesis into the vanishing of certain determinants:

\[ \begin{array}[c]{ccccccccccc} \{A,B,C\} \text{ collinear} &\iff& \det \begin{pmatrix} 1&0&0\\ a&b&c \\ d&e&f \end{pmatrix} =0; &\hspace{2em}& \{B,Z,\alpha\} \text{ collinear} &\iff& \det \begin{pmatrix} a&b&c\\ j&k&l \\ 0&0&1 \end{pmatrix} =0; \\\\ \{A,Y,\gamma\} \text{ collinear} &\iff& \det \begin{pmatrix} 1&0&0\\ g&h&i \\ 1&1&1 \end{pmatrix} =0; &\hspace{2em}& \{C,X,\beta\} \text{ collinear} &\iff& \det \begin{pmatrix} d&e&f\\ 0&1&0 \\ m&n&o \end{pmatrix} =0; \\\\ \{A,Z,\beta\} \text{ collinear} &\iff& \det \begin{pmatrix} 1&0&0\\ j&k&l \\ m&n&o \end{pmatrix} =0; &\hspace{2em}& \{C,Y,\alpha\} \text{ collinear} &\iff& \det \begin{pmatrix} d&e&f\\ g&h&i \\ 0&0&1 \end{pmatrix} =0; \\\\ \{B,X,\gamma\} \text{ collinear} &\iff& \det \begin{pmatrix} a&b&c\\ 0&1&0 \\ 1&1&1 \end{pmatrix} =0; &\hspace{2em}& \{X,Y,Z\} \text{ collinear} &\iff& \det \begin{pmatrix} 0&1&0\\ g&h&i \\ j&k&l \end{pmatrix} =0. \end{array} \]

As each matrix contains a standard vector row,5 each condition reduces to the vanishing of a 2×2 sub-matrix giving the following equalities,

\[\begin{align} \begin{array}[c]{ll} ce=bf, & bj=ak, & i=h, & fm=do, & ko=ln, & dh=eg, & a=c, & gl=ij. \end{array}\end{align}\]

We next want to multiply all these equalities together and simplify, but first we have to check that the required cancellations are possible. To illustrate, we give an explicit argument that division by \(a\) is possible; analogous arguments hold for the other variables. By the fact that the triples of points are distinct and that \((A,C) \neq (X,Z)\) we have that \(C\), \(X\) and \(\alpha\) are not collinear. Therefore \[ 0 \neq \det{\small \begin{pmatrix} a&b&c \\[-2ex] 0&1&0 \\[-2ex] 0&0&1 \end{pmatrix}}=a. \] Once everything has been simplified, the equalities reduce to \(m=n\), which is equivalent to

\[\begin{align*} \det \begin{pmatrix} 0&0&1\\ m&n&o \\ 1&1&1 \end{pmatrix} =0 \quad \iff \quad \{\alpha,\beta,\gamma\} \text{ collinear.} \end{align*}\]

\(\square \qquad\)

Perhaps the first thing to say about this proof is that it isn’t either particularly illuminating. It basically boils down to, write down homogeneous coordinates for everything in sight, translate the hypothesis collinearities into algebraic relations between the homogeneous coordinates and then see if these imply the algebraic condition corresponding to the conclusion. In short, the proof is routine, technical and tedious, which makes it an ideal task for a computer. That’s why Richter-Gebert wrote an algorithm that generated projective proof/theorem pairs based on this structure (Richter-Gebert 1993).

In truth, the proof presented above does need some tweaking before it can be turned into an algorithm. Our choice of the basis \(\mathcal{B}\) is specific to the Pappus configuration: there’s no reason why such a helpful basis should exist in another set-up. The solution to this problem is a bit beyond the scope of this essay, but in brief, one can use the Grassmann–Plücker relations to work in an equivalent manner without making a special choice of basis. One also has to systematise the argument that allowed us to cancel certain terms (e.g. how we proved that the coordinate \(a\) was non-zero). This is done by introducing the notion of non-degeneracy data, which in our case was the claim that the triples of points were distinct and \((A,C) \neq (X,Z)\). This data can then be shown to allow certain cancellations. To summarise, Richter-Gebert wrote an algorithm that took as input

  • a collection of hypothesis intersections and collinearities (\(\mathcal{H}\))
  • non-degeneracy data (\(\mathcal{B}\))
  • a collection of conclusion intersections and collinearities (\(\mathcal{C}\))

and would then decide whether or not \(\mathcal{C}\) followed from \(\mathcal{H}\) and \(\mathcal{B}\). A proof produced via this algorithm is called a binomial proof. The first genuinely intriguing fact I learnt about Pappus’ theorem was that it’s the simplest non-trivial theorem which admits a binomial proof.

This is all well and good, but the proofs produced by this algorithm are still going to admit the flaws we’ve already mentioned. In Section 6 we’ll discuss a more illuminating (but equally powerful) proof strategy. But to get there we need a better proof of Pappus’ theorem and that proof starts with a different result: Ceva’s theorem.


  1. A row containing exactly one non-zero entry which is equal to \(1\).↩︎