The event calculus is a
logical theory
In mathematical logic, a theory (also called a formal theory) is a set of sentences in a formal language. In most scenarios a deductive system is first understood from context, giving rise to a formal system that combines the language with deduct ...
for representing and reasoning about
events and about the way in which they change the state of some real or artificial world. It deals both with action events, which are performed by agents, and with external events, which are outside the control of any agent.
The event calculus represents the state of the world at any time by the set of all the facts (called ''
fluents'') that hold at the time. Events initiate and terminate fluents:
The event calculus differs from most other approaches for reasoning about change by
reifying time, associating events with the time at which they happen, and associating fluents with the times at which they hold.
The original version of the event calculus, introduced by
Robert Kowalski and Marek Sergot in 1986,
was formulated as a
logic program and developed for representing narratives and database updates. Kave Eshghi showed how to use the event calculus for planning, by using
abduction to generate hypothetical actions to achieve a desired state of affairs.
It was extended by
Murray Shanahan and Rob Miller in the 1990s and reformulated in
first-order logic with circumscription.
These and later extensions have been used to formalize non-deterministic actions, concurrent actions, actions with delayed effects, gradual changes, actions with duration, continuous change, and non-inertial fluents.
Van Lambalgen and Hamm showed how a formulation of the event calculus as a
constraint logic program can be used to give an algorithmic semantics to tense and aspect in natural language.
Fluents and events
In the event calculus, fluents are
reified. This means that fluents are represented by
terms. For example,
expresses that the
is on the
at time
. Here
is a predicate, while
is a term. In general, the atomic formula
:
expresses that the
holds at the
Events are also reified and represented by terms. For example,
expresses that the
is moved onto the
at time
. In general:
:
expresses that the
happens at the
The relationships between events and the fluents that they initiate and terminate are also represented by atomic formulae:
:
expresses that if the
happens at the
then the
becomes true after the
.
:
expresses that if the
happens at the
then the
ceases to be true after the
.
Domain-independent axiom
The event calculus was developed in part as an alternative to the
situation calculus The situation calculus is a logic formalism designed for representing and reasoning about dynamical domains. It was first introduced by John McCarthy in 1963. The main version of the situational calculus that is presented in this article is based o ...
, as a solution to the
frame problem
In artificial intelligence, with implications for cognitive science, the frame problem describes an issue with using first-order logic to express facts about a robot in the world. Representing the state of a robot with traditional first-order logi ...
, of representing and reasoning about the way in which actions and other events change the state of some world.
There are many variants of the event calculus. But the core axiom of one of the simplest and most useful variants can be expressed as a single, domain-independent axiom:
:
:
The axiom states that
: a fluent
F holds at a time
T2 if
: an event
E1 happens at a time
T1 and
:
E1 initiates
F at
T1 and
:
T1 is before
T2 and
: it is not the case that there exists an event
E2 and a time
T such that
::
E2 happens at
T and
::
E2 terminates
F at
T and
::
T1 is before or at the same time as
T and
::
T is before
T2.
The event calculus solves the frame problem by interpreting this axiom in a non-monotonic logic, such as first-order logic with Circumscription (logic), circumscription or, as a
logic program, in
Horn clause
In mathematical logic and logic programming, a Horn clause is a logical formula of a particular rule-like form that gives it useful properties for use in logic programming, formal specification, universal algebra and model theory. Horn clauses are ...
logic with
negation as failure
Negation as failure (NAF, for short) is a non-monotonic inference rule in logic programming, used to derive \mathrm~p (i.e. that p is assumed not to hold) from failure to derive p. Note that \mathrm ~p can be different from the statement \neg p o ...
.
In fact, circumscription is one of the several semantics that can be given to negation as failure, and it is closely related to the completion semantics for logic programs (which interprets if as if and only if).
The core event calculus axiom defines the
holdsAt predicate in terms of the
happensAt,
initiates,
terminates,
< and
\leq predicates. To apply the event calculus to a particular problem, these other predicates also need to be defined.
The event calculus is compatible with different definitions of the temporal predicates
< and
\leq . In most applications, times are represented discretely, by the natural numbers, or continuously, by non-negative real numbers. However, times can also be partially ordered.
Domain-dependent axioms
To apply the event calculus in a particular problem domain, it is necessary to define the
initiates and
terminates predicates for that domain. For example, in the
blocks world
The blocks world is a planning domain in artificial intelligence. It consists of a set of wooden blocks of various shapes and colors sitting on a table. The goal is to build one or more vertical stacks of blocks. Only one block may be moved at ...
domain, an event
move(Object, Place) of moving an object onto a place initiates the fluent
on(Object, Place), which expresses that the object is on the place and terminates the fluent
on(Object, Place1), which expresses that the object is on a different place:
:
\mathit(move(Object, Place), on(Object, Place), Time).
:
\mathit(move(Object, Place), on(Object, Place1), Time) \leftarrow different(Place1, Place).
If we want to represent the fact that a
Fluent holds in an initial state, say at time 1, then with the simple core axiom above we need an event, say
initialise(Fluent), which initiates the
Fluent at any time:
:
\mathit(initialise(Fluent), Fluent, Time).
Problem-dependent axioms
To apply the event calculus, given the definitions of the
holdsAt,
initiates,
terminates,
< and
\leq predicates, it is necessary to define the
happensAt predicates that describe the specific context of the problem.
For example, in the blocks world domain, we might want to describe an initial state in which there are two blocks, a red block on a green block on a table, like a toy traffic light, followed by moving the red block to the table at time 1 and moving the green block onto the red block at time 3, turning the traffic light upside down:
:
\mathit(initialise(on(red\_block,green\_block), 0)
:
\mathit(initialise(on(green\_block,table), 0)
:
\mathit(move(red\_block, table), 1)
:
\mathit(move(green\_block, red\_block), 3)
A Prolog implementation
The event calculus has a natural implementation in pure Prolog (without any features that do not have a logical interpretation). For example, the blocks world scenario above can be implemented (with minor modifications) by the program:
holdsAt(Fluent, Time2) :-
before(Time1, Time2),
happensAt(Event, Time1),
initiates(Event, Fluent, Time1),
not(clipped(Fluent, Time1, Time2)).
clipped(Fluent, Time1, Time2) :-
terminates(Event, Fluent, Time),
happensAt(Event, Time),
before(Time1, Time),
before(Time, Time2).
initiates(initialise(Fluent), Fluent, Time).
initiates(move(Object, Place), on(Object, Place), Time).
terminates(move(Object, Place), on(Object, Place1), Time).
happensAt(initialise(on(green_block, table)), 0).
happensAt(initialise(on(red_block, green_block)), 0).
happensAt(move(red_block, table), 1).
happensAt(move(green_block, red_block), 3).
The Prolog program differs from the earlier formalisation in the following ways:
* The core axiom has been rewritten, using an auxiliary predicate
clipped(Fact, Time1, Time2). This rewriting enables the elimination of existential quantifiers, conforming to the Prolog convention that all variables are universally quantified.
* The order of the conditions in the body of the core axiom(s) has been changed, to generate answers to queries in temporal order.
* The equality in the condition
T1 \leq T has been removed from the corresponding condition
before(Time1, Time). This builds in a simplifying assumption that events do not simultaneously initiate and terminate the same fluent. As a consequence, the definition of the
terminates predicate has been simplified by eliminating the condition that
different(Place1, Place).
Given an appropriate definition
[For example:
before(Time1, Time2) :-
timeline(Eternity),
append(Before, After Eternity),
member(Time1, Before).
timeline( , 1, 2, 3, 4, 5.
] of the predicate
before(Time1, Time2), the Prolog program generates all answers to the query ''what holds when?'' in temporal order:
?- holdsAt(Fluent, Time).
Fluent = on(green_block,table), Time = 1.
Fluent = on(red_block,green_block), Time = 1.
Fluent = on(green_block,table), Time = 2.
Fluent = on(red_block,table), Time = 2.
Fluent = on(green_block,table), Time = 3.
Fluent = on(red_block,table), Time = 3.
Fluent = on(red_block,table), Time = 4.
Fluent = on(green_block,red_block), Time = 4.
Fluent = on(red_block,table), Time = 5.
Fluent = on(green_block,red_block), Time = 5.
The program can also answer negative queries, such as ''which fluents do not hold at which times?'' However, to work correctly, all variables in negative conditions must first be instantiated to terms containing no variables. For example:
timePoint(1).
timePoint(2).
timePoint(3).
timePoint(4).
timePoint(5).
fluent(on(red_block, green_block)).
fluent(on(green_block, red_block)).
fluent(on(red_block, table)).
fluent(on(green_block, table)).
?- timePoint(T), fluent(F), not(holdsAt(F, T)).
F = on(green_block,red_block), T = 1.
F = on(red_block,table), T = 1.
F = on(red_block,green_block), T = 2.
F = on(green_block,red_block), T = 2.
F = on(red_block,green_block), T = 3.
F = on(green_block,red_block), T = 3.
F = on(red_block,green_block), T = 4.
F = on(green_block,table), T = 4.
F = on(red_block,green_block), T = 5.
F = on(green_block,table), T = 5.
Reasoning tools
In addition to Prolog and its variants, several other tools for reasoning using the event calculus are also available:
Abductive Event Calculus PlannersDiscrete Event Calculus ReasonerEvent Calculus Answer Set ProgrammingRun-Time Event Calculus (RTEC)
Extensions
Notable extensions of the event calculus include Markov logic networks–based variants
probabilistic
Probability is a branch of mathematics and statistics concerning events and numerical descriptions of how likely they are to occur. The probability of an event is a number between 0 and 1; the larger the probability, the more likely an e ...
, epistemic and their combinations.
See also
*
First-order logic
First-order logic, also called predicate logic, predicate calculus, or quantificational logic, is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantified variables over ...
*
Frame problem
In artificial intelligence, with implications for cognitive science, the frame problem describes an issue with using first-order logic to express facts about a robot in the world. Representing the state of a robot with traditional first-order logi ...
*
Situation calculus The situation calculus is a logic formalism designed for representing and reasoning about dynamical domains. It was first introduced by John McCarthy in 1963. The main version of the situational calculus that is presented in this article is based o ...
References
Further reading
* Brandano, S. (2001)
The Event Calculus Assessed" ''IEEE TIME Symposium'': 7-12.
* R. Kowalski and F. Sadri (1995)
Variants of the Event Calculus" ''ICLP'': 67-81.
* Mueller, Erik T. (2015). ''Commonsense Reasoning: An Event Calculus Based Approach (2nd Ed.)''. Waltham, MA: Morgan Kaufmann/Elsevier. . (Guide to using the event calculus)
* Shanahan, M. (1997)
Solving the frame problem: A mathematical investigation of the common sense law of inertia'. MIT Press.
* Shanahan, M. (1999)
The Event Calculus Explained Springer Verlag, LNAI (1600): 409-30.
Notes
{{reflist, group=note
1986 introductions
Logic in computer science
Logic programming
Knowledge representation
Logical calculi