Action languages are formal ways of representing the human notion about actions and their effects. A basic element common in most action languages is the transition system. Action languages model actions and world situations in such a way that these can directly or indirectly be mapped to a transition system, where actions form transitions between states.
Situation calculus [McCarthy and Hayes, 1969; Levesque et al., 1998] is the oldest and most widely used logical formalism for describing dynamic domains. It was introduced in 1963 by McCarthy and subsequently refined. Situation calculus is a second-order framework for representing dynamically changing worlds in classical first-order language. Variables might be of different types including objects. Situ- ation calculus represents the world and its change as sequence of situations, where each situation is a term that represents a state and is obtained by executing an action (action×situation→situation). Action functions are a main element of the formal- ism and a special binary predicate Poss : action×situation is used to indicate under which situation s an action a is executable. Additionally, effect axioms describe changes in situations that result from the execution of actions. Situation calculus allows for the representation of the initial situation s0 and a special function symbol DO(a, s)which
describes the situation obtained after performing action a at situation s. Finally, two types of fluents, relational fluents, of type (actionS
object)n×situation and situational fluents of type (actionS
object)n×situation→actionS
object are considered as prop- erties of the world model change. The main problem that occurs when modelling in situation calculus is the so-called framing problem (or frame problem). That is, since there is no way to indicate the properties that remain unchanged within a domain after the execution of an action (the non-effects of actions), there occurs a need to represent a large number of frame axioms, leading to a great complexity of the domain. The
successor state axioms, one for each fluent, tackle the problem, by making sure that ef- fect axioms fully specify all the ways in which the value of a particular fluent can be changed as a result of performing an action.
Event calculus [Kowalski and Sergot, 1986], introduced by Kowalski and Sergot, is another approach for encoding actions into first-order predicate logic. This calculus was designed to allow reasoning over time intervals and includes the non-monotonic inference negation as failure. The main difference between event calculus and situation calculus is conceptual: event calculus is based on points in time rather than on global situations and fluents hold at points in time rather than at situations, as it happens in situation calculus. The events, their effects and durations are expressed in Horn logic [Horn,1951]. A special predicate HoldsAt(f , t)is used to indicate that a fluent f holds at a given time point t. The predicate Initially(f) indicates that a fluent f holds at time 0 and t1 <t2 that time point t1 is before t2. The effects of actions are
given using the predicates Initiates(a, f , t) and Terminates(a, f , t) where t indicates a specific point in time. Predicate Happens(a, t)indicates that an action a takes place at time t. Finally, predicate Clipped(t1, f , t2) indicates that fluent f has been made false
between time points t1 and t2. The frame problem can be solved in a similar fashion
to the one used in situation calculus, by adding axioms stating that a fluent is true at some time point if it has been made true before and has not been falsified in the meantime as well as stating the opposite case in which a fluent is false at a given time. According to [Eshghi, 1988], planning in the event calculus can be considered as an abductive task, where a logic programming technique is applied to generate plans using representations of Initiates, Terminates and Happens predicates. While there are some earlier implementations of such abductive event calculus planners [Jung et al., 1996;Shanahan, 2000], these are rather inefficient, due to the nature of Prolog employed to act as the abductive theorem prover.
The fluent calculus [Thielscher, 1999, 2005] is yet another formalism for expressing dynamical domains in first-order logic. It is a variant of the situation calculus; the main difference is that situations are considered representations of states. The world can be in the same state in different situations, but the state in every situation is unique. The main contribution of the fluent calculus is its solution of the inferential frame problem by the means of state update axioms. In [Thielscher, 2005] a fluent calculus executor (FLUX) is presented.
For domains of incomplete and/or inconsistent information one can find action spec- ification languages such asA [Gelfond and Lifschitz,1993,1998] andK [Eiter et al.,
2003], which allow modelling dynamic domains with incomplete and inconsistent in- formation. Both languages are close in spirit to answer set semantics (Answer Set Programming or ASP [Dimopoulos et al.,1997;Marek and Truszczynski,1999]).A al-
lows the effects of an action to be conditional. It roughly contains: a) effect propositions of the type: a causes f if p1. . . , pn,¬q1, . . . ,¬qr, b) value propositions of the type: f
after a1, . . . , an and 3) propositions stating the initial situation of the system of the
can be read by and produce plans via an ASP solver. LanguageK has similar syntax
and semantics toA. A system that usesK is the DLVKdeclarative, logic programming
based planning system. DLVK allows for parallel execution of actions and both strong (¬) and weak (not) negation. The main strength of the languageKis that it can deal
with cost functions in the action descriptions and that it can reason about incomplete states. On the other hand, it lacks the ability to express conditional effects, durative actions and flexible numeric handling.
Several other frameworks are also concerned with the design of action descriptions. In [Baral et al.,1997; Baral, 2003] Baral et al. detail an action description language to express causal laws over the effects of actions and the values of fluents in possible states of the world. Additional work of some of the authors mentioned previously focuses on different aspects of reasoning over dynamic domains [Baral and Gelfond, 1999] and over properties of actions [Gelfond and Lifschitz,1993].
The language C+[Giunchiglia et al.,2004] is a formalisation for defining and reason- ing about the effects of actions and the persistence (inertia) of facts over time. An action description in C+ is a set of C+ laws (containing static laws of type “‘caused F if G” and dynamic laws of type “caused F if G after H”) which define a labelled transition system with explicit semantics. The main problem of the original language C+is that it is purely propositional, not allowing variables. An implementa- tion of a variation of C+in Prolog supporting a range of querying and planning tasks is available, notably in the form of the “Causal” Calculator CCalc [McCain,1997]. An important disadvantage of all the aforementioned languages is that their semantics does not deal with conditional effects and numeric functions and costs (with the ex- ception ofK) in the domain. Additionally, as already explained, while there are some
practical implementations of these frameworks, they are limited by the execution times of Prolog or ASP solvers and there do not exist sufficiently efficient implementations that can compete with current classical planners and hierarchical planners. We discuss the latter two in the following section.