>
 

MATH 392 -- Seminar in Computational Commutative Algebra 

 

Pappus' Theorem -- November 20, 2006 

 

This theorem states that if   A(x), B(x), `and`(C(x), diff(A(x), x)), diff(B(x), x), diff(C(x), x) 

are two collinear triples of points in the plane, then the 

points  

 

  

 

are collinear.   

 

To translate this to polynomial equations, we introduce 

coordinates as follows 

 

  

 

  

 

  

 

The hypotheses are first, `and`((diff(C(x), x))*is*collinear*with*(diff(A(x), x)), diff(B(x), x)); -1 

> h[1] := (x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]); 1
 

(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]) 

Then `and`(`in`(P, diff(AB(x), x)), `in`(P, (diff(A(x), x))*B)); -1 

> h[2] := x[4]*u[5]-x[3]*u[6]; 1
 

x[4]*u[5]-x[3]*u[6] 

> h[3] := (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]); 1
 

(x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]) 

Then  `and`(`in`(Q, diff(AC(x), x)), `in`(Q, (diff(A(x), x))*C)); -1 

> h[4] := (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6]; 1
 

(x[6]-x[2])*x[5]-(x[5]-x[1])*x[6] 

> h[5] := (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]); 1
 

(x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]) 

Finally, `and`(`in`(R, diff(BC(x), x)), `in`(R, (diff(B(x), x))*C)); -1 

> h[6] := x[8]*(x[7]-x[1])-(x[8]-x[2])*(x[7]-u[1]); 1
 

x[8]*(x[7]-x[1])-(x[8]-x[2])*(x[7]-u[1]) 

> h[7] := x[8]*(x[7]-u[5])-(x[8]-u[6])*(x[7]-u[2]); 1
 

x[8]*(x[7]-u[5])-(x[8]-u[6])*(x[7]-u[2]) 

The conclusion is P, Q, R*are*collinear 

> g := (x[8]-x[6])*(x[7]-x[3])-(x[8]-x[4])*(x[7]-x[5]); 1
 

(x[8]-x[6])*(x[7]-x[3])-(x[8]-x[4])*(x[7]-x[5]) 

> with(Groebner); -1
 

> Htilde := [seq(h[i], i = 1 .. 7), 1-g*y]; 1
 

[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
 

> xvars := [seq(x[j], j = 1 .. 8), y]; 1
 

[x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], y] 

> Basis(Htilde, tdeg(op(xvars))); 1
 

[1] 

Note the u - variables are omitted here in the specification of the grevlex order. 

Hence the conclusion follows generically from the hypotheses over  ℂ  in this  

case.  We have the same sort of behavior that we saw previously. 

 

The conclusion is "almost" in the ideal generated by the hypotheses in the  

polynomial ring in both x -  and  u - variables, but there are "degenerate" 

configurations too introducing reducibility(!) 

 

> H := [seq(h[i], i = 1 .. 7)]; 1
 

[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
[(x[1]-u[3])*(x[2]-u[6])-(x[1]-u[5])*(x[2]-u[4]), x[4]*u[5]-x[3]*u[6], (x[4]-u[4])*(x[3]-u[1])-x[4]*(x[3]-u[3]), (x[6]-x[2])*x[5]-(x[5]-x[1])*x[6], (x[6]-u[4])*(x[5]-u[2])-x[6]*(x[5]-u[3]), x[8]*(x[7]...
 

> HBasis := Basis(H, tdeg(seq(x[j], j = 1 .. 8), seq(u[k], k = 1 .. 6))); -1
 

> nops(HBasis); 1
 

39 

>
 

Here is one of the Grobner basis, in factored form, and the conclusion: 

> factor(HBasis[30]); 1
 

-u[6]*u[4]*(-u[4]*x[3]+x[4]*u[3])*(-x[4]*x[5]+x[4]*x[7]+x[6]*x[3]-x[8]*x[3]+x[8]*x[5]-x[6]*x[7]) 

> simplify(g); 1
 

-x[4]*x[5]+x[4]*x[7]+x[6]*x[3]-x[8]*x[3]+x[8]*x[5]-x[6]*x[7] 

>