The event calculus is a logical language for representing and reasoning about events and their effects first presented by Robert Kowalski and Marek Sergot in 1986. It was extended by Murray Shanahan and Rob Miller in the 1990s. Similar to other languages for reasoning about change, the event calculus represents the effects of actions on fluents. However, events can also be external to the system. In the event calculus, one can specify the value of fluents at some given time points, the events that take place at given time points, and their effects.
Contents
Fluents and events
In the event calculus, fluents are reified. This means that they are not formalized by means of predicates but by means of functions. A separate predicate
Events are also represented as terms. The effects of events are given using the predicates
Domain-independent axioms
Like other languages for representing actions, the event calculus formalizes the correct evolution of the fluent via formulae telling the value of each fluent after an arbitrary action has been performed. The event calculus solves the frame problem in a way that is similar to the successor state axioms of the situation calculus: a fluent is true at time
This formula means that the fluent represented by the term
- an event
e has taken place:H a p p e n s ( e , t 1 ) ; - this took place in the past:
t 1 < t ; - this event has the fluent
f as an effect:I n i t i a t e s ( e , f , t 1 ) ; - the fluent has not been made false in the meantime:
C l i p p e d ( t 1 , f , t )
A similar formula is used to formalize the opposite case in which a fluent is false at a given time. Other formulae are also needed for correctly formalizing fluents before they have been effects of an event. These formulae are similar to the above, but
The
Domain-dependent axioms
The axioms above relate the value of the predicates
The right-hand expression of this equivalence is composed of a disjunction: for each event and fluent that can be made true by the event, there is a disjunct saying that
The formula above specifies the truth value of
These formulae are simpler than the formula above, because each effect of each event can be specified separately. The single formula telling which events
However, these formulae are not equivalent to the formula above. Indeed, they only specify sufficient conditions for
A similar approach can be taken for the
Circumscription can simplify this specification, as only necessary conditions can be specified:
Circumscribing the predicate
The event calculus as a logic program
The event calculus was originally formulated as a set of Horn clauses augmented with negation as failure and could be run as a Prolog program. In fact, circumscription is one of the several semantics that can be given to negation as failure, and is closely related to the completion semantics (in which "if" is interpreted as "if and only if" — see logic programming).
Extensions and applications
The original event calculus paper of Kowalski and Sergot focused on applications to database updates and narratives. Extensions of the event calculus can also formalize non-deterministic actions, concurrent actions, actions with delayed effects, gradual changes, actions with duration, continuous change, and non-inertial fluents.
Kave Eshghi showed how the event calculus can be used for planning, using abduction to generate hypothetical events in abductive logic programming. Van Lambalgen and Hamm showed how the event calculus can also be used to give an algorithmic semantics to tense and aspect in natural language using constraint logic programming.
Reasoning tools
In addition to Prolog and its variants, several other tools for reasoning using the event calculus are also available: