Transition system TS2
is actually a family of transition systems, one for each value of N.
The following piece of code defines the system corresponding to N=3:

:- constants
c :: inertialFluent(0..3);
a :: exogenousAction.
a causes c=1 if c=0.
a causes c=2 if c=1.
a causes c=3 if c=2.
nonexecutable a if c=3.

In the declaration of c, the symbol inertialFluent is
followed by (0..3) to indicate that the possible values of this
fluent are integers between 0 and 3, rather than f and t.
Each of the causes propositions is conditional -- it includes
if. For instance, the
first of them describes the effect of action a when it is executed
in a state satisfying c=0.
The nonexecutable proposition in the last line tells us that the
transition system does not have an edge that begins at the vertex
c=3 and is labeled a=t. (Without this proposition,
such an edge would be included in the transition system, according to the
semantics of
C+. Since the causes propositions in this action description do not
postulate any effect of a on c when c=3, this edge, by
inertia, would be a loop.)

The causes propositions in this example follow a simple pattern, and
the input language of CCalc allows us to use this fact to make the action
description more compact:

The letter I is declared here to be a variable ranging over
0,1,2, and we use it in a "schematic proposition" that represents
a set of 3 instances. In CCalc code, capital letters and identifiers
beginning with a capital letter are customarily used as variables, but not
as constants (or as anything else, for that matter). This convention is
related to the fact that CCalc is written in Prolog. Violating this
convention is considered, in some cases, a syntax error.

The last piece of code can be further improved by treating the value of
N as a macro: