Whiteheadian Philosophy and Prolog Computer Programming

by Granville C. Henry and Michael Geersten

Granville C. Henry is Professor of Mathematics and Philosophy at Claremont McKenna College, Claremont, California. Michael C. Geertsen graduated from Claremont McKenna College in 1985 with a degree in philosophy and public affairs.

The following article appeared in Process Studies, pp. 181-191, Vol. 15, Number 3, Fall, 1986. Process Studies is published quarterly by the Center for Process Studies, 1325 N. College Ave., Claremont, CA 91711. Used by permission. This material was prepared for Religion Online by Ted and Winnie Brock.


The authors believe structures allowing descriptions of prehensions as well as providing symbolic understanding of Whitheadian eternal objects and propositions have been found. Surprisingly, these structures are to be found in the form of a modern computer programming language — Prolog.

Whitehead came to his mature philosophical position in Process and Reality after many years of wrestling with problems in the foundations of logic and mathematics. His doctrine of eternal objects in both his earlier and later philosophy can be understood as a description of the ontological nature of pure logic and mathematics (EWP 14-28). Eternal objects as patterned after mathematical structures found in Science and the Modern World are understood primarily in a logical guise coming from Principia Mathematica. In Process and Reality Whitehead developed a philosophy of actual entities that are comprised of and established by prehensions. In this same work eternal objects as potential structures for actuality do not have an evident form as structures for prehension but maintain their original logical and mathematical interpretation. This does not exclude, however, the possible existence of a logical or mathematical structure for prehensions. Indeed we would expect that Whitehead, had he been able to continue his logical and mathematical development and especially had he known of contemporary computer developments, would have expanded the boundaries of the logical structure of eternal objects to include a direct description of the structure of prehension. At present, however, the contemporary understanding of Whitehead’s philosophy of organism involves eternal objects resting on the intuitions of logic and mathematics that contrast with concrescing actual entities united through prehension. The abstract logical structure of prehensions is not represented naturally by the familiar form of Whiteheadian eternal objects. Does there exist a form for representing eternal objects that can also show in a clear manner the prehensive structure of actual entities?

An Imaginative Leap Via Microcomputers

We believe that we have found a set of structures that allows descriptions of prehensions as well as providing a symbolic understanding of Whiteheadian eternal objects and propositions. Surprisingly these structures are to be found in the form of a modern computer programming language -- Prolog. We have been struck by the similarity of the development of logic programming into Prolog with that of Whitehead’s historical philosophical development. Whitehead as mathematician and logician desired to make logic applicable to actual experience in the real world. The fruits of this desire are found in Process and Reality where he developed a new understanding of propositions. Computer specialists wanted to use logic to program computers. Their failure with standard predicate logic, which Whitehead used in Principia Mathematica, led to the development of a new clausal logic that could more efficiently program a computer. We believe that this clausal logic of Prolog provides a better way of understanding eternal objects. It is better because its form, which allows programming a computer, also allows representation of a structure of prehensions that may occur in the concrescing of an actual entity. Its form also allows an understanding of how an eternal obect may become a Whiteheadian proposition and act as a lure for feeling for some conscrescing subject.

We need to emphasize in the beginning that we are understanding computer programs in two distinct ways. The first way is as a symbolic means for controlling the actions and output of a computer. The second way is as symbolism which represents a structure that may have no necessary relation to a computer. Prolog programs, for example, will stand for both general Whiteheadian eternal objects and propositions as well as a set of instructions that when entered into a computer can direct its actions.

Prolog Programming

Prolog (Programming in Logic) is a high-level, contemporary computer language that is generally applicable to all kinds of programming but is particularly useful in data base analysis, expert systems, and projects in artificial intelligence. It has been adopted by the Japanese as the primary language for their national program to develop artificial intelligence. Although Prolog is a powerful and expressive programming language, it is easy to learn -- especially by those who have had no previous programming experience. The primary purpose of this article is to show the similarity between Prolog programming and Whiteheadian philosophy and to use Prolog programming to illustrate some aspects of the concepts of eternal objects, propositions, actual entities, and concrescence. A secondary purpose is to encourage process philosophers and theologians to explore the joys of computing through this Whiteheadian-like programming language that is at the forefront of current computer science development.

A Prolog program is a list of clauses. A clause is a list of relations consisting of a head relation and a possibly empty tail list of relations. In the clause ( (loves John x) (attractive x) (intelligent x)), (loves John x) is the head relation, and the tail list of relations consists of (attractive x) and (intelligent x). This clause may be translated in logic as "John loves x if x is attractive and x is intelligent," and some Prolog systems allow you to write the clause almost in this English fashion. [Actually you would have to write it John loves x if x is-attractive and x is-intelligent."] Notice that the full clause is a conditional with the head as consequent and the tail as antecedent. At this stage, however, it is best to see the clause as asserting only that the head relation (loves John x) is dependent in some way on the elements of the tail (attractive x) and (intelligent x). We now suggest that a Prolog clause may have the following Whiteheadian interpretation. The tail relations of the clause can be viewed as a possible pattern of prehensions; namely, those prehensions which are necessary for the head relation possibility to be felt as true in the actual world of some concrescing subject. All relations, head and tail, and clauses made up of relations, play a multiple role. Abstracted as pure possibilities, they represent eternal objects. As possibilities in some actual world they are propositions and serve as lures for feeling. If felt in some way by some concrescing entity, they then become symbols for actual prehensions: "A proposition is an element in the objective lure proposed for feeling, and when admitted into feeling it constitutes what is felt" (PR 187/ 284). Let us illustrate this Whiteheadian interpretation further.

Consider the Prolog program consisting of the previous clause and the additional clauses ( (attractive x) (kind x) (Scandinavian x)), ( (attractive Jane)), ( (attractive Floyd)), ( (kind Eloise)), ( (Scandinavian Eloise)), ( (intelligent Eloise)), and ( (intelligent Floyd)). Notice that the first two clauses in the complete program listed below have both a head relation and tail relations, but the remaining clauses have only a head relation.

( (loves John x)

(attractive x) (intelligent x))

( (attractive x)

(kind x) (Scandinavian x))

( (attractive Jane))

( (attractive Floyd))

( (kind Eloise))

( (intelligent Eloise))

( (intelligent Floyd))

( (Scandinavian Eloise))

A relation in Prolog, for example, (loves John x), consists of a name and list of variables and constants. In this case the name of the relation is loves, John is a constant, and x is a variable. The order of variables and constants in a relation is significant; for example, (loves John Mary) interpreted "John loves Mary" is different from (loves Mary John) interpreted "Mary loves John." Relations have names that signify properties such as "kind" and "attractive" and those that signify activities such as "loves," This variety of possible names of relations and the states and activities that they symbolize fits well with Whitehead’s understanding of a world in process and of prehensions of this active process. A relation may be as complex as desired. After the name of the relation a list of as many constants and variables as needed may be used. We point this out because we have used only simple relations in the program above. If relations in Prolog are to be interpreted as symbols for prehensions in a Whiteheadian context, they must possess the capacity to be arbitrarily complex in order to represent complex prehensions.

We remind the reader at this stage that the clauses above can be considered both as a computer program and as a symbolic structure of a Whiteheadian proposition with its requisite prehensions for a true judgment feeling in concrescing subjects. As presented to a concrescing subject (loves John x) acts as a lure for feeling. Another way of understanding the proposition represented by this clause is: Some entity named John loves another unnamed entity. The concrescing subject lured by (loves John x) is also lured by other clauses, i.e., by any of those in the left hand column above. Thus, the program represents possibilities for feeling which act as lures (propositions) until, if ever, they are felt by some concrescing subject. At this point they then become symbols of actual prehensions. The clauses in the above program suggest possible ways of being that can be felt by the concrescing subject -- for example, that Eloise is kind or that John loves her [Eloise substituted for x in (loves John x)]. What the set of clauses shows as a proposition, in addition to its role as lure, is that should the concrescing subject decide to feel, for example, that John loves Eloise, it must be able to prehend in its actual world that Eloise is Scandinavian, kind, and intelligent. Should the concrescing subject be lured instead by (loves John Jane), the clauses show that because Jane cannot be prehended as intelligent in this subject’s actual world, (loves John Jane) cannot be felt as true. However, the same concrescing subject can prehend a component proposition of (loves John Jane) as true, namely that Jane is attractive. Thus a false proposition can still have power as a lure: "It is more important that a proposition be interesting than it be true" (Al 243). Because it is interested in the proposition (loves John Jane), the concrescing subject has a number of options depending on the subjective form of its feeling of that false proposition. It may be angry, delighted, or indifferent and choose to take action accordingly. Of course, it must be remembered that numerous other propositions are competing for the lured, but not necessarily conscious, attention of this subject.

In Whiteheadian philosophy there are no abstract prehensions. Actual entities are beings which prehend other actual entities. In the example above (loves John Eloise) is a feeling established in some actual entity by a prehension of other actual entities in which (attractive Eloise) and (intelligent Eloise) are positive prehensions in these entities. That Eloise is felt as attractive in the satisfaction of one of these entities is the result of its prehensions of entities that include the facts that Eloise is kind and that Eloise is Scandinavian. In the reading of Prolog clauses, we do not wish to imply that a relation is a full symbol of an actual entity. We do wish to point out that the feeling that John loves Eloise in some actual entity must be the result of this Prolog clausal structure of prehensions of actual entities (or nexus) which establish the fact that Eloise is kind, Scandinavian, and intelligent. The Prolog clauses give a lure for feeling which also represents the exact structure of prehensions necessary for this lure to be obtained.

A Logical Reading of a Prolog Program

In the computer science programming literature, a Prolog program can be interpreted in two primary and different ways: a logical (or descriptive) reading and a control (or imperative) reading. A logical reading allows us to understand a Prolog program as an abstract structure, a structure that can be interpreted as a Whiteheadian eternal object or proposition. This reading understands each Prolog clause to be a formal sentence in predicate logic and allows us to assess the scope and limits of Prolog programs from our knowledge of logic. A control reading of a Prolog program asks how the computer solves a problem using Prolog. Such a reading allows us to add an interpretation of prehensive structure to the logical reading. Although Whitehead understood logic primarily as our logical reading of a Prolog program, it is the control reading which can illuminate the structure of Whitehead’s prehensive philosophy. A discussion of the control reading will follow a discussion of the logical reading.

In the logical reading, a Prolog program is a list of logical definitions about a certain situation. The program above is a limited description of John, Jane, Eloise, and Floyd and their relations of loves, attractive, kind, intelligent, and Scandinavian. To program in Prolog one must be able to describe a situation in logical terms subject only to minimal constraints of grammar. This is much easier than programming in almost all other computer programming languages where one must tell a complex computer what to do and how to do it.

To "execute" a Prolog program, you ask it a question. For example, on being asked "Does John love Eloise?" (in an appropriate format) the computer will respond affirmatively. In the logical reading this means that "John loves Eloise" logically follows from the statements of the program interpreted as formal logical sentences. You can see this quickly from the translation of relevant portions of the program into an argument.

John loves x if x is attractive and x is intelligent.

x is attractive if x is kind and x is Scandinavian.

Eloise is kind.

Eloise is Scandinavian.

Eloise is intelligent.

Therefore John loves Eloise.

To the question "Does John love Jane?" (in an appropriate format) the computer would respond negatively, indicating that this conclusion does not logically follow from the premises of the argument.

This program is of course very simple, and the human mind can solve queries of the sort asked almost as quickly as the computer. In a complex situation requiring a complex logical description, a computer execution of a query can be very helpful and make possible a solution of a problem that, because of its difficulty, could not be solved other wise.

In the logical reading of a Prolog program each clause or statement in the program may be understood to be a formal sentence in predicate logic. To get the exact set of formal sentences, universal quantifiers for each variable in the clause must be put at the beginning of the clause, an "if" must be put between the head and the tail of the clause, and "and’s" must be put between the members of the tail of the clause. Some versions of Prolog allow working directly with logical sentences, but these versions, in our judgment, tend to exaggerate the logical character of Prolog and to obscure a control reading that shows its Whiteheadian structure. By knowing that a Prolog program may be considered as a list of sentences in predicate logic and by knowing further that any sentence in predicate logic may be expressed in an equivalent Prolog clausal form, we can assert that Prolog is logic and that any sentences in logic may be expressed in a Prolog form. By viewing Prolog programs in their logical reading, we may assess the nature of the ontological structures that Prolog programs represent through their status as logic.

Whitehead came to his view about the nature of eternal objects from his study of logic and mathematics. Any logical or mathematical structure in its pure sense as a potential for actualization of entities is an eternal object. Triangles, mathematical relations, logical systems, groups, rings, spaces, etc. are all eternal objects or can be viewed as eternal objects through their ordinary expression in mathematical or logical symbolism. This means that a Prolog program interpreted at its most abstract level as a logical or mathematical structure is a symbolic expression for an eternal object. Prolog programs are, of course, just one means for expressing the structures of eternal objects. Others are through ordinary mathematical expression or through the use of ordinary language involving, for example, colors. Prolog, however, is surprisingly adequate in its expressive powers. Since Prolog is predicate logic and predicate logic is the basis for the expression of all other logics and mathematics, it may be possible to express the structure of any eternal object by some Prolog program. Understanding a Prolog program as a symbol for an eternal object may also assist us in understanding how an eternal object is nested in another eternal object and how their structures are related. For example, the clause ( (attractive x) (kind x) (Scandinavian x)) in our simple program symbolizes an eternal object in which potential attractiveness requires (in this example) kindliness and being Scandinavian. In turn, this clause, by virtue of its head (attractive x) is nested in the clause ( (loves John x) (attractive x) (intelligent x)) which, as symbolizing an eternal object, might be described as showing the relationship between loving, attractiveness, and intelligence. We believe that this representation of the structure of eternal objects by Prolog programs could be a helpful tool for further analysis of Whitehead’s discussion of the structure of eternal objects (see SMW, chapter 11). Furthermore, the nesting of clauses indicates that propositions, like eternal objects, may be complex. That is, propositions may also have a nested logical structure.

A Prolog program may also be considered to be a symbolic expression for a theory. A theory technically is defined in contemporary logic to be a set of sentences such that any sentence which logically follows from members in the set is also in the set. The set of sentences including axioms and those sentences which logically follow from the axioms is a theory. Prolog is able to test whether or not a hypothesis, posed to a computer as a query, logically follows from a list of axioms (the program itself). A Prolog program considered as a set of axioms in predicate logic, and further possessing the ability to decide (in most cases) whether or not a query logically follows from the axioms, may therefore be considered to be a symbolic expression of a theory.

Whitehead identifies his redefined propositions to be theories (PR 184/ 280). However, his understanding of a theory more closely resembles a notion of an hypothesis in contemporary logic than the modern notion of a theory. We believe that a Prolog program can be understood both as a theory in the modern sense and as a complex Whiteheadian proposition, thereby confirming Whitehead’s intuition of the relationship of propositions and theories while making Whitehead’s position more compatible with the definitions of contemporary logic.

Theories from the perspective of contemporary logic can be viewed as eternal objects when understood in an abstract interpretation. When theories become hybrid by the identification of some of their parts with actual entities, they become Whiteheadian propositions and serve as lures for feeling for some concrescing subject. The lure for feeling is some possibility inherent in the situation that the proposition presents to the concrescing subject. This possibility is actually some conclusion of the theory viewed as axioms. We do not think, however, that Whitehead had in mind that the concrescing entity must go through a series of deductions from the theory in order to select that which is its lure for feeling. That lure is somehow evident, available and wooing the entity, yet it is chosen by it. A Prolog program is a proposition that presents lures and shows how these lures are available to be felt dependent upon prehensions of a concrescing subject. A control reading makes this dual role of a Prolog program evident in a way which the abstract logical reading does not.

A Control Reading of a Prolog Program

In contrast to the method of logical deduction employed above to test whether (loves John Eloise) holds in relation to the program, let us examine the mechanism of how the computer using Prolog actually tests the clause (loves John Eloise) in regard to the program, which is relisted below.

( (loves John x)

(attractive x) (intelligent x))

( (attractive x)

(kind x) (Scandinavian x))

( (attractive Jane))

( (attractive Floyd))

( (kind Eloise))

( (intelligent Eloise))

( (intelligent Floyd))

( (Scandinavian Eloise))

Notice again that the program by its organization presents possibilities, including among others that of John loving someone in the form of the clause (loves John x). In order to utilize the program, the computer operator must make a decision. In the light of the suggestions inherent in the form of the program, he or she must decide exactly what information is desired. This information may be general information -- for example, "Does John love someone and whom?" or more specific information such as "Does John love Eloise?" If the computer operator decides to ask the question "Does John love Eloise?" it can be entered as a query in an appropriate form.

Although a Whiteheadian proposition may present to a concrescing entity a possibility for its actual situation as a lure for feeling, the proposition does not determine mechanically and causally the final satisfaction of the entity. The entity decides what it shall be. It is the cause of itself. We maintain that a Prolog program as a symbol for a Whiteheadian proposition presents possibilities and lures for a concrescing entity. In addition, the program presents the pattern of prehension necessary for the concrescing entity to be able to judge (feel) any of these possibilities as true in the actual world. However, the concrescing entity must decide what lures to pursue in a manner similar to the choice that must be made by the computer operator.

By his or her decision to ask the query "Does John love Eloise?" the computer operator passes information into the program. In particular the computer identifies the pattern of (loves John Eloise) with the pattern (loves John x) in the first clause and passes the value of the variable x as Eloise to the tail of the clause. It then checks (attractive Eloise), identifies it with the pattern ( (attractive x) in the second clause, and then passes the value of Eloise as x in this clause on to its tail. [Please try to follow this action in the program.] It then checks (kind Eloise) and finds that (kind Eloise) obtains because it is listed in this form as a clause in the program. It then checks (Scandinavian Eloise), which also holds because it is listed in the program. Thus it has confirmed that (attractive Eloise) holds and has satisfied part of the tail of (loves John x) with x as Eloise. It next moves on to the rest of the tail of (John loves x) and tests (intelligent x) with x as Eloise. The clause (intelligent Eloise) is listed in the program, and therefore (loves John Eloise) is confirmed.

The same clauses functioning as Whiteheadian propositions play the following role. Some concrescing entity establishes the head and tail clauses by prehensions in its actual world which allow confirmation of the clauses as true judgments. In this case (loves John Eloise) is established by prehensions (attractive Eloise) and (intelligent Eloise). The clause (attractive Eloise) is established by prehensions (kind Eloise) and (Scandinavian Eloise). The clauses (kind Eloise), (Scandinavian Eloise), and (intelligent Eloise) are symbols of true judgments as a result of actual prehensions. Thus (loves John Eloise) can be confirmed in this actual world by the pattern of prehensions just listed.

These steps presented sequentially in the discussion above may appear to violate Whitehead’s claim that concrescence does not occur as temporal succession in physical time (PR 283/434). We are describing the computer’s activities as sequential because, to date, standard Prolog is executed sequentially. However, a current major effort of computer research is towards the development of parallel processing. Major successes have been achieved so far in parallel processing research using Prolog programming. For Prolog, parallel processing would mean the ability to solve simultaneously clausal conditions in tails, thus leading to a much truer representation of Whitehead’s doctrine of prehension.


In a Whiteheadian interpretation, a Prolog clausal structure or program as predicate logic in its most formal sense can symbolize directly an eternal object. The logical structure of a Prolog program is the same logic, in a slightly different form, from which Whitehead’s mature understanding of eternal objects developed. The natural structure of Prolog programs allows us to see in an appealing manner how eternal objects and propositions are nested and related to each other and how they can reveal the form of prehensive structure in the real world. A Prolog program understood as a proposition may provide lures for feeling for some concrescing subject and can show this subject the necessary possibilities for prehension which must be actualized if that lure is to be felt (judged) as true.

We hope that the position taken in this article concerning the relationship between Whiteheadian philosophy and Prolog programming will encourage an examination of the following suggestions and implications.

Recursion and Personal Societies

Any proposition for a personal society (enduring object) can be viewed as a recursive Prolog program. An actual entity in a personal society prehends itself in its immediate past along with prehensions of other objectified past actual entities. This structure, according to our Whiteheadian interpretation of Prolog programs, is exactly the structure of a recursive program whose head relations, with possible changes in variables and constants, are contained in their own tails. If we realize that recursive structures are extremely powerful contemporary techniques for solving problems in science and mathematics, and further realize that personal societies solve problems of their own -- namely, their own enduring existence -- then Prolog programs as prehensive structures can be an effective tool in analyzing and clarifying the relationship between a Whiteheadian ontology and current computer science.

Teleology and Mechanism

The language Prolog is both teleological and mechanistic. A Prolog program is teleological in two ways. First, the computer operator using it must present a goal or hypothesis (which is normally suggested by the program itself as a lure) in order to activate the program. Second, although mechanistically driven, a Prolog program offers a problem-solving pattern that is teleological by virtue of its backward chaining function. Stated simply, backward chaining starts with a consequent, functioning as an "aim," and attempts to justify it by working backward to its antecedents. An actual entity is teleological in that it chooses what it shall be in terms of an initial aim or goal. It is mechanistic in that it can be seen to be caused and limited by its prehensions of its own actual world. In both Whiteheadian philosophy and Prolog computer programming teleology and mechanism are interrelated. A suggestive question is whether, under our assumption that a Prolog program can represent a Whiteheadian proposition that illuminates the structure of concrescence, the play of teleology and mechanism in Prolog computer programming can give an appropriate insight into the relationship of teleology and mechanism in Whiteheadian philosophy.

The Scope and Limits of Artificial Intelligence

In our Whiteheadian perspective, if a computer (Prolog) program, however complex, can be no more than a complex symbol for a Whiteheadian proposition or eternal object, then neither it nor the computer running it can ever be as intelligent as a human personal society. This is because neither the computer nor the program is a subjective entity that experiences the world through prehension. Yet Prolog programs can be devised that possess the ability to modify themselves intelligently dependent upon their contact with both computer operators (who do prehend) and scientific input devices that mechanically "see" and "feel." Thus, we see no limit to the complexity and usefulness of computer programs that have their own history, go through their own development, learn from their own mistakes, and as symbols of Whiteheadian propositions offer both intelligent lures and the means to confirm or deny them.

Recommendations for Prolog Systems

For process philosophers and theologians who wish to use Prolog, we recommend Micro-Prolog, produced by Logic Programming Associates, London, England. Get the version for the microcomputer available to you. The associated teaching manual is Micro-Prolog: Programming in Logic by K. L. Clark and F. C. McCabe, published by Prentice-Hall International. It is easy to learn Prolog using their SIMPLE front-end system, but learning to program in the standard syntax, which we have used throughout this article, illuminates best a Whiteheadian interpretation. There are a number of other systems available that use the now standard textbook Programming in Prolog by W. F. Clocksin and C. S. Mellish, published by Springer-Verlag.



EWP -- Granville C. Henry. "Whitehead’s Philosophical Response to the New Mathematics." Explorations in Whitehead’s Philosophy, ed. Lewis S. Ford and George L. Kline. New York: Fordham University Press, 1983.