next up previous
Next: Actions by Persons and Up: Situation Calculus Representations Previous: Simple situation calculus


Not so simple situation calculus

The notion of $Bad$ in the previous subsection avoids any actual notion of the missionaries being eaten. More generally, it avoids any notion that in certain situations, certain events other than actions will occur. We can put part of this back.

We would like to handle the requirement for oars and the ability of Jesus Christ to walk on water in a uniform way, so that we could have either, both or neither of these elaborations.

To say that the missionaries will be eaten if the cannibals outnumber them can be done with the formalism of [McC95].


(7) \begin{displaymath}
\begin{array}[l]{l}
Holds(Bad(bank),s) \rightarrow \\
\qu...
...lds(At(x,bank),s)
\rightarrow Occurs(Eaten(x),s)).
\end{array}\end{displaymath}

As sketched in [McC95], the consequences of the occurrence of an event may be described by a predicate $Future(f,s)$, asserting that in some situation in the future of the situation $s$, the fluent $f$ will hold. We can write this


(8) \begin{displaymath}
Future(f,s) \rightarrow (\exists s')(s <_{time} s' \land Holds(f,s')),
\end{displaymath}

and treat the specific case by


(9) \begin{displaymath}
occurs(Eaten(x),s) \rightarrow F(Dead\mbox{-}soon(x),s)
\end{displaymath}

To say that something will be true in the future of a situation is more general than using $Result$, because there is no commitment to a specific next situation as the result of the event. Indeed an event can have consequences at many different times in the future. The $Result(e,s)$ formalism is very convenient when applicable, and is compatible with the formalism of $Occurs$ and $F$. We have


(10) \begin{displaymath}
\lnot Ab(Aspect2(e,s)) \land Occurs(e,s) \rightarrow
Future((\lambda s')(s' = Result(e,s)),s),
\end{displaymath}

where something has to be done to replace the lambda-expression $(\lambda s')(s' = Result(e,s))$ by a syntactically proper fluent expression. One way of doing that is to regard $Equal(Result(e,s))$ as a fluent and write


(11) \begin{displaymath}
\lnot Ab(Aspect2(e,s)) \land Occurs(e,s) \rightarrow
Future(Equal(Result(e,s))).
\end{displaymath}

We may get yet more mileage from the $Result$ formalism. Suppose $Result(e,s)$ is taken to be a situation after all the events consequential to $e$ have taken place. We then have one or more consequences of the form $Past(f,Result(e,s))$, and these permit us to refer to the consequences of $e$ that are distributed in time. The advantage is that we can the use $Result(e,s)$ as a base situation for further events.


next up previous
Next: Actions by Persons and Up: Situation Calculus Representations Previous: Simple situation calculus
John McCarthy
2003-09-29