ABSTRACT

At the end of Chapter 8, we had developed a discrimination net capable of efficiently deciding whether a particular S-expression had been entered in a database. However there are many situations in which the machinery developed is not sufficient for our needs. An obvious example is the retrieval mechanism needed for the deductive system given in the last chapter, where we needed to retrieve information using patterns with variables, and where the facts in the database also could have variables. In this chapter we show how to upgrade our discrimination nets to handle these cases. We start, however, with a much simpler situation. Suppose we have a database containing plans for accomplishing various goals. For instance, we might have a plan of the following form:

Person2. Person1 says the fact aloud. A LISP representation of this plan might be

where a plan has the form

( PLAN plan-name goal-form Csubgoal r * ) 230

(PLAN ESP-PLAN (INFORM GELLER ?PERSON ?FACT)

iGELLER May inforM SOMeone (MENTALLY-TRANSFER GELLER ?PERSON ?FACT»

(PLAN THINK-PLAN (INFORM ?PERSON GELLER ?FACT)

(PLAN TALK-PLAN (INFORM ?PERSONl ?PERSONZ ?FACT)

(As in Chapter 10, a symbol preceded by a question mark is a variable.) One of the things we would want the system to do is to take a specific goal and find ways in which it might be accomplished. Let us suppose we have a database consisting of TAL K-PLAN, plus some other plans, as given in Figure 11.1.