Primitives and canonical forms

In a given domain, it may frequently occur that two logical expressions that are equivalent in terms of truth conditions are not equivalent in terms of form. For instance, if buy(X, Y, Z) means 'X buys Y from Z' and sell(X, Y, Z) means that 'X sells Y to Z', then both of the following are true:


buy(X, Y, Z) if sell(Z, Y, X) sell(X, Y, Z) if buy(Z, Y, X)

and hence, for instance, the following statements are equivalent, even though they look different:


buy(hilton, sheraton, itt) sell(itt, sheraton, hilton)

It would be wasteful if, every time we wished to infer something about buy we had to try inferring the equivalent statement in terms of sell (and vice versa). So, it makes sense to abandon using one of the predicates and express everything in terms of the other instead.

Sometimes the use of a predicate will be equivalent to a combination of other uses of predicates:


bankrupt(X) if in_debt(X) and no_money(X)

in_debt(X) if bankrupt(X) no_money(X) if bankrupt(X)

In this case, we might decide that bankrupt is to be abandoned and phrase all bankrupt statements in terms of in_debt and no_money instead. If, by appropriately transforming our logical expressions in these kinds of ways, we are able to guarantee that logically equivalent expressions are equivalent in form, then we have found a canonical form for logical expressions. Having a canonical form can be of great benefit. For instance, it enables a question-answering system to cope with paraphrases very easily:




user: ITT sold Sheraton to Hilton. system: OK .... user: (Is it the case that) Hilton bought Sheraton from ITT? system: YES

One kind of canonical form involves the translation of a logical expression into an equivalent one that only uses predicates from a fixed set of primitive predicates. Primitive predicates are predicates whose meaning cannot be expressed using combinations of other predicates. For instance, in a question-answering system about company employees, we would probably take male and female to be primitives; in an expert system on genetics, one probably would not. Whether a predicate is primitive or not thus depends very much on the domain of application and the range of relationships that arise in that domain.

Note that there can be canonical forms that do not involve primitives, and there can be primitive-based systems that do not provide canonical forms. For instance, imagine a canonical form where either buy was translated into sell or vice versa, depending on some contextual factor. Also, imagine a system that provided several, equivalent but different, translations of a formula in terms of primitives.

One approach to translating complex relations or events into a representation by primitives involves representing the type of a relation or event separately from the objects involved in it. In restricted domains, the ways in which objects can be related to events may generalize across types of events, and so it may be productive to decompose the representation in a way that makes this explicit. For instance, the following sentences:


(1) The space shuttle flew to Los Angeles. (2) The apprentice moved the cylinder into the chamber. (3) The plasma arrived at the hospital.

all seem to be talking about kinds of motion, with emphasis on the destinations of the moved objects. There are certain general inferences that we can make concerning objects and their destinations, regardless of the type of motion that gets them there. For instance, we know that an object is at a given place if it has just finished a motion with that place as its destination. We also know that shortly before the end of the motion, the object must have been somewhere else. Similarly, it is possible to have sentences that describe motion where the emphasis is on where the moving objects come from:


(4) The space shuttle took off from Cape Kennedy. (5) The apprentice took the cylinder out of the chamber. (6) The plasma left the hospital.

Again, there are general inferences that we can make about objects and where they start off, regardless of the type of motion. Here is one way we could represent the information in (1) to (6) which makes explicit their similarities and differences:




(1) fly_event(ev1) moved_object(ev1, ss1) destination(ev1, la) (2) move_event(ev2) moved_object(ev2, cy1) destination(ev2, ch1) (3) travel_event(ev3) moved_object(ev3, pl1) destination(ev3, ho1) (4) fly_event(ev4) moved_object(ev4, ss1) source(ev4, ck) (5) move_event(ev5) moved_object(ev5, cy1) source(ev5, ch1) (6) travel_event(ev6) moved_object(ev6, pl1) source(ev6, ho1)

The advantage of this kind of representation is that we could phrase inference rules in terms of the very general predicates employed. For instance, the rule:




at(X, Y, Z)  if moved_object(E, X) and destination(E, Y) and finishing_time(E, Z)

expresses the fact that an object X is at location Y at time Z if there is an event E that moves object X to Y and the time Z is the same as the time when E finishes. If we did not translate event representations into such small pieces, we would have to formulate such an inference rule again and again for different types of events. The question naturally arises as to how general are relations like moved_object and destination. For how many verbs can we decompose the meanings into such pieces? How many such 'deep cases' (primitive conceptual roles) are there? Some relations between objects and events (for example, the notion of agent) seem to be very generally useful, but it is not clear that there are many others.

If we wish to use canonical forms for the meanings of natural language sentences, we have a choice as to where the canonicalization actually takes place. One possibility is that the semantics associated with lexical items is expressed directly in terms of primitives. For instance, we might say that a use of the word 'bankrupt' gives rise to two logical expressions of the form in_debt(X) and no_money(X). Alternatively, we might have a logical predicate bankrupt that corresponds directly to the English word sense, together with inference rules:




in_debt(X) if bankrupt(X) no_money(X) if bankrupt(X)

which are used in a forwards direction. One advantage of the latter is that, if there are actually some subtle inferences about bankrupt that cannot be made in terms of in_debt and no_money (for example, those to do with the special legal status of a bankrupt individual) then those special cases can still be handled, even though the bulk of inferences will indeed be phrased in terms of the more primitive predicates.

Exercise 9.5

Send us a comment.



[Contents] [Previous] [Next]
This document was translated by troff2html v0.21 on October 22, 1996.