In the last section of part 3, in proving that one person could get into conversation with another, we were obliged to add the hypothesis that if a person has a telephone he still has it after looking up a number in the telephone book. If we had a number of actions to be performed in sequence we would have quite a number of conditions to write down that certain actions do not change the values of certain fluents. In fact with n actions and m fluents we might have to write down mn such conditions.
We see two ways out of this difficulty. The first is to introduce the notion of frame, like the state vector in McCarthy (1962). A number of fluents are declared as attached to the frame and the effect of an action is described by telling which fluents are changed, all others being presumed unchanged.
This can be formalized by making use of yet more ALGOL notation, perhaps in a somewhat generalized form. Consider a strategy in which p performs the action of going from x to y. In the first form of writing strategies we have go(x,y) as a program step. In the second form we have s:=result(p,go(x,y),s). Now we may write
and the fact that other variables are unchanged by this action follows from the general properties of assignment statements. Among the conditions for successful execution of the program will be sentences that enable us to show that when this statement is executed, tryfor(y,x)=y. If we were willing to consider that p could go anywhere we could write the assignment statement simply as
The point of using tryfor here is that a program using this simpler assignment is, on the face of it, not possible to execute, since p may be unable to go to y. We may cover this case in the more complex assignment by agreeing that when p is barred from y, tryfor(y,x)=x.
In general, restrictions on what could appear on the right side of an assignment to a component of the situation would be included in the conditions for the feasibility of the strategy. Since components of the situation that change independently in some circumstances are dependent in others, it may be worthwhile to make use of the block structure of ALGOL. We shall not explore this approach further in this paper.
Another approach to the frame problem may follow from the methods of the next section; and in part 5 we mention a third approach which may be useful, although we have not investigated it at all fully.