is consistent.

3. On a related point, our procedure assumes that information about the initial situation is given by Init. In particular, action effect axioms should not entail any information about the initial situation. For instance, given Causes(q, ¬p), Effect(**A, true, p**),
and Precond(A, true), it must be that in the initial situation, q **cannot be true, for**
otherwise, it will persist into the next situation, causing p to be false, which contradicts the action effect. Formally, this means that given any set I **of atoms of the**
form init(f), where f **is a primitive fluent atom, if** I ∪ I
− ∪ Init **is consistent, then**
I∪I
−∪Succ∪Succ**1 is also consistent, where** I
−, the complement of I**, is the following**
set:

## {¬Init(F) | Init(F) 6∈ I And F **Is A Primitive Fluent Atom Generated By Step 1**}

Notice that for a similar reason, Reiter needed what he called the consistency assumption in order for his completion procedure to be sound and complete for generating successor state axioms (Reiter, 1991).

While our action domain descriptions are clearly targeted at specifying deterministic actions, some indeterminate effects can sometimes arise from cyclic domain rules. For instance, consider the following action domain description:
Causes(**p, p**), Precond(**A, true**)
For action A, Init is a tautology, Succ1 is empty, and Succ **consists of the following pseudosuccessor state axiom for** p:
succ(p) ≡ succ(p) ∨ **init**(p),
which is equivalent to init(p) ⊃ succ(p). So if initially p is true, then after A **is performed,**
we know that p will continue to be true. But if p is initially false, then after A **is performed,**
we do not know if p **is true or not.**
Example 2 **Consider the blocks world description in Example 1. The set of fluent atoms**
generated by Step 1 is:

$$\begin{array}{c}{{{\mathcal{F}}=\{o n(1,1),o n(1,2),o n(1,3),o n(2,1),o n(2,2),o n(2,3),}}}\\ {{\qquad o n(3,1),o n(3,2),o n(3,3),c l e a r(1),c l e a r(2),c l e a r(3),}}\\ {{\qquad o n t a b l e(1),o n t a b l e(2),o n t a b l e(3)\}.}}\end{array}$$

Step 2 generates the following action instances:
stack(1, 2), stack(1, 3),stack(2, 1),stack(2, 3),stack(3, 1)**, stack**(3, 2), unstack(1, 2), unstack(1, 3),unstack(2, 1),unstack(2, 3)**,unstack**(3, 1), unstack(3, 2), move(1, 2, 3),move(1, 3, 2),move(2, 1, 3)**,move**(2, 3, 1),
move(3, 1, 2)**,move**(3, 2, 1)