15.1 Planning with Individuals and Relations

15.1.2 Event Calculus

The second relational representation for reasoning about actions and change, the event calculus, models how the truth value of relations changes because of events occurring at certain times. Time can be modeled as either continuous or discrete.

Events are modeled as occurring at particular times. Event E occurring at time T is written as event(E,T).

Events make some relations true and some no longer true:

  • initiates(E,R,T) is true if event E makes primitive relation R true at time T

  • terminates(E,R,T) is true if event E makes primitive relation R no longer true at time T.

Time T is a parameter to initiates and terminates because the effect of an event can depend on what else is true at the time. For example, the effect of attempting to unlock a door depends on the position of the robot and whether it is carrying the appropriate key.

Relations are either true or false at any time. In the event calculus, relations are reified, where holds(R,T) means that relation R is true at time T. This is analogous to having T as the last argument to R in the situation calculus. The use of the meta-predicate holds allows general rules that are true for all relations.

Derived relations are defined in terms of primitive relations and other derived relations for the same time.

Primitive relation R holds at time T if an event occurred before T that made R true, and there was no intervening event that made R no longer true. This can be specified as follows:

holds(R,T)
    event(E,T0)
    T0<T
    initiates(E,R,T0)
    clipped(R,T0,T).
clipped(R,T0,T)
    event(E1,T1)
    terminates(E1,R,T1)
    T0<T1
    T1<T.

The atom clipped(R,T0,T) means there is an event between times T0 and T that makes R no longer true; T0<T1 is true if time T0 is before time T1. Here is negation as failure, and so these clauses mean their completion.

Actions are represented in terms of what properties they initiate and terminate. As in the situation calculus, the preconditions of actions are specified using the poss relation.

Example 15.11.

The pickup action initiates a carrying relation, and it terminates a sitting_at relation as long as the preconditions for pickup are true:

initiates(pickup(Ag,Obj),carrying(Ag,Obj),T)
    poss(pickup(Ag,Obj),T).
terminates(pickup(Ag,Obj),sitting_at(Obj,Pos),T)
    poss(pickup(Ag,Obj),T).
poss(pickup(Ag,Obj),T)
    autonomous(Ag)
    AgObj
    holds(at(Ag,Pos),T)
    holds(sitting_at(Obj,Pos),T).

This implies that if a pickup is attempted when the preconditions do not hold, nothing happens. It is also possible to write clauses that specify what happens under different circumstances, such as when a pickup is attempted for an object that is being held by something else.

Given particular action occurrences, and making the complete knowledge assumption that all intervening events are specified, the top-down proof procedure with negation as failure can be used to prove what is true.

The event calculus is different from the situation calculus in that it is based on a temporal representation rather than a state-based representation; the T argument in the event calculus is a time and not a state or situation. This means that an agent can reason about discrete or continuous time. Multiple agents carrying out actions in time can be modeled by specifying when the various actions by the agents occurred. The situation calculus requires interleaving the actions by different agents. The event calculus also lends itself to the case where events have durations. Given the times that events occurred, the effect can depend on the duration between times. Planning in the situation calculus is done by constructing a proof of the existence of a situation. In the event calculus, planning is done by abduction, which is used to hypothesize the occurrence of events to make a goal true.