0.2. Describing Actions
Describing transition systems is one of the main uses of the input language
of CCalc. The CCalc approach to this task is based on action language C+
from the paper
Causal Theories" (NMCT) by
Norman McCain and
(Artificial Intelligence, Vol. 153, 2004).
C+ is an enhancement of action language A proposed by
Michael Gelfond and
Vladimir Lifschitz in 1993
(Journal of Logic Programming, Vol. 17). Both languages
describe effects of actions by sets of propositions, such as
a causes p.
Language C+ is more expressive than A: it allows us to describe transition
systems with concurrently executed actions, and also transition systems with
non-Boolean fluents. Here are some other differences.
A precise description of the syntax and semantics of C+ can be found in
This tutorial provides informal explanations and examples that will help you
describe transition systems in the language of CCalc even if you are not
familiar with that paper.
A more flexible approach to inertia.
Proposition a causes p can be used to describe
transition system TS1:
it tells us that every edge labeled a=t leads to the state
p=t. But how do we know that, in this example, the
a=f are loops? Such an edge represents an event in which
action a is not executed, and we expect the value of p not to
change after such an event "by inertia." The problem of making this
idea of inertia precise is known as the frame problem. The semantics
of A applies the inertia assumption automatically to every fluent. In C+, on
the other hand, "inertial fluents" are only a special case. The possibility
of not postulating inertia for a fluent is essential, for instance, when that
fluent is characterized by its definition in terms of other fluents.
Causal dependencies between fluents. In C+ we can talk not only about
the effect of an action on a fluent, but also about causal dependencies between
fluents. If a causal dependency between two fluents is postulated then an
action affecting one fluent may indirectly affect the other. The problem of
making the idea of indirect effects precise is known as the ramification
Causal dependencies between actions. Propositions of C+ allow us to talk
about causal dependencies between actions. We will see later that this is
useful when we want to state a proposition that is defeasible. But in
many cases this feature of C+ is not needed, and we simply assume every action
to be "exogenous" -- any event is assumed to have an external cause, not
described by the given propositions.
The fragment of the input language of CCalc that deals with describing
actions is intended to be an elaboration tolerant
formalism. This idea is characterized by
John McCarthy in the paper
Elaboration Tolerance (in progress) in these words:
A formalism is elaboration tolerant to the extent that it is convenient to
modify a set of facts expressed in the formalism to take into account new
phenomena or changed circumstances. Representations of information in
natural language have good elaboration tolerance when used with human
background knowledge. Human-level AI will require representations with
much more elaboration tolerance than those used by present AI programs,
because human-level AI needs to be able to take new phenomena into account.
The simplest kind of elaboration is the addition of new formulas. We'll call
these additive elaborations. Next comes changing the values of parameters.
Adding new arguments to functions and predicates represents more of a change.
to Section 0.3: Queries
to Section 0.1: Transition Systems
Up to the Table of Contents