GAP code for A. N. Whitehead's geometric algebra

GAP is a system for computational algebra and group theory. I'm experimenting with implementing Whitehead's algebra in GAP. The program on this page is the latest version; it makes Whitehead's algebra as a module over a polynomial ring. Hitherto, I've never been entirely satisfied with the treatment of pseudonumbers in my book on Whitehead's algebra, but I think that the identification of Whitehead's algebra with a module over a polynomial ring fixes this problem once and for all. I'll be updating the book to reflect this new formulation in due course; the change will not affect any of the mathematical results, but the computational implementation will be freed from certain restrictions in the Yorick and Scilab implementations due to the forcing of pseudonumbers to be ordinary numbers. The following is a brief summary of the new approach, using the (2-d) projective plane to illustrate the change.

In the projective plane, there are 3 reference points a1, a2, a3. We then get three reference lines a1a2, a1a3, a2a3. Finally, the plane itself is represented by the element a1a2a3. A general point p in the plane is a linear combination of the reference points,
p=c1a1+c2a2+c3a3
where c1,c2,c3 are numerical weights. Similarly, a general line is a linear combination of the reference lines. There is only one planar (grade 3) reference element a1a2a3 and so a general element of grade 3 is of the form,
W=c123a1a2a3
where c123 is a numerical weight. In other words, all the grade 3 elements are proportional to one another. In this sense, the elements of grade 3 are like real numbers. The difference is that ordinary numbers are scalars; they don't change under linear transformations, whilst the new numbers get multiplied by the determinant of the linear transformation. I call the elements of grade 3 pseudonumbers.

It turns out that the pseudonumbers are so like ordinary numbers that they naturally occur as weights in the algebra. So, the coefficients ck that were said to be numerical weights, can in fact be numbers or pseudonumbers. Here is an illustration of how this can happen. Suppose we form the product of two lines a1a2 and a1a3. In Whitehead's algebra, the result of multiplying the lines is to obtain the point at their intersection. The algebra gives,
(a1a2)(a1a3) =(a1a2a3)a1
which is the point a1 at the intersection of the pair of lines, weighted by the pseudonumber a1a2a3. In earlier computer implementations of the algebra, I did not see how to handle the different types of numerical coefficient, so I arbitrarily set a1a2a3=1 which is not correct, but doesn't cause any trouble unless one starts to work with transformations which have non-unity determinant; only then does the pseudo character of pseudonumbers show up. (I'm not the only one who has had difficulty handling the pseudonumbers, Whitehead himself also sets a1a2a3=1 towards the end of article 98 of his book A Treatise on Universal Algebra, and Barnabei, Brini and Rota restricted their paper on the Exterior Calculus of Invariant Theory to the group of transformations with unity determinant.) In the new GAP implementation of Whitehead's algebra, the pseudonumber a1a2a3=z where z is the indeterminate of a univariate polynomial. This means that the coefficients ck in Whitehead's algebra can be (Laurent) polynomials such as 3z^2-2z+4-8z^-1. This is fine because the polynomials form a ring and mathematicians have figured out that elements of a ring can be generalized coefficients of a vector space (it's just that a vector space with ring coefficients goes by the name of a module). The following program implements the module over a polynomial ring version of Whitehead's algebra and the diary file shows some examples of its use.


File          Last Modified   Description

Whiteheadv3.g 15-Oct-2006 Program to set up Whitehead's algebra in GAP diary.txt 15-Oct-2006 Log of GAP session to test the implementation of Whitehead's algebra

Back to my home page