652 16. Situation Calculus
(16.6)handempty(do(stack(x, y), s)),
(16.7)on(u, v, do(stack(x, y), s)) ≡ (u = x ∧ v = y) ∨ on(u,v,s),
(16.8)clear(u, do(stack(x, y), s)) ≡ u = x ∨ (clear(u, s) ∧ u = y),
(16.9)ontable(u, do(stack(x, y), s)) ≡ ontable(u, s),
(16.10)holding(u, do(unstack(x, y), s)) ≡ u = x,
(16.11)¬handempty(do(unstack(x, y), s)),
(16.12)on(u, v, do(unstack(x, y), s)) ≡ on(u,v,s)∧¬(x = u ∧ y = v),
(16.13)clear(u, do(unstack(x, y), s)) ≡ u
= y ∨ (clear(u,
s) ∧ u = x),
(16.14)ontable(u, do(unstack(x, y), s)) ≡ ontable(u, s),
(16.15)holding(u, do(pickup(x), s)) ≡ u = x,
(16.16)¬handempty(do(pickup(x), s)),
(16.17)on(u, v, do(pickup(x), s)) ≡ on(u,v,s),
(16.18)clear(u, do(pickup(x), s)) ≡ clear(u, s) ∧ u = x,
(16.19)ontable(u, do(pickup(x), s)) ≡ ontable(u, s) ∧ x = u,
(16.20)holding(u, do(putdown(x), s)) ≡ holding(u, s) ∧ u = x,
(16.21)handempty(do(putdown(x), s)),
(16.22)on(u, v,
do(putdown(x
), s)) ≡ on(u,v,s),
(16.23)clear(u, do(putdown(x), s)) ≡ u = x ∨ clear(u, s),
(16.24)ontable(u, do(putdown(x), s)) ≡ u = x ∨ ontable(u, s).
Similarly, we can write the following axioms for our second version of the blocks
world domain.
(16.25)Poss(move(x, y), s) ≡ x = table ∧ clear(x, s) ∧ clear(y, s)
clear(u, do(move(x, y), s)) ≡
(16.26)u = table ∨ on(x,u,s)∨ (clear(u, s) ∧ u = y),
on(u, v, do(move(x, y), s)) ≡
(16.27)(x = u ∧ y = v) ∨ (on(u,v,s)∧ u = x).
16.2 The Frame, the Ramification and the Qualification Problems
The set of axioms (16.1)–(16.24) provides a complete logical characterization of the
effects of actions for our first blocks world domain. For each action, it gives necessary
and sufficient conditions for it to be executable in any situation, and fully specifies
the effects of this action on every fluent. Similarly, the set of axioms (16.25)–(16.27)
completely captures the effects of actions for our second blocks world domain.
However, there is something unsatisfying about these two sets of axioms. When
we informally described the effects of actions, we did not describe it this way. For