## 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 "Nonmonotonic Causal Theories" (NMCT) by Enrico Giunchiglia, Joohyung Lee, Vladimir Lifschitz, Norman McCain and Hudson Turner (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 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 edges labeled 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 problem.

• 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.
A precise description of the syntax and semantics of C+ can be found in NMCT. 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.

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.

Forward to Section 0.3: Queries
Back to Section 0.1: Transition Systems