Go backward to Operator termination.
Go up to Encoding a task.
Go forward to Operator application: Internal.
Termination of task operator
----------------------------
The build-tower operator should be terminated when the current state matches
the operator's desired state. The following production reconsiders the
operator if the state matches the operator's desired state. The reconsider
will allow a new decision to be made to select the appropriate top-level
operator.
IF the goal is the top goal, and
the operator is build-tower, and
the operator's desired state matches the current state
THEN create a reconsider preference for the operator.
Once this production fires and reconsiders the original task operator {(O2)},
that operator will not be selected because the production that created its
acceptable preference will no longer match (it tested that the blocks were
not stacked) and the acceptable preference will be retracted. Thus, if there
is an acceptable preference for some other operator, that operator will be
selected. In the trace below, we have skipped to the selection of the wait
operator, O5. The wait operator is proposed, with acceptable and worst
preferences, whenever problem space {top-ps} is selected. When build-tower
was originally proposed, {wait} was not selected, but once build-tower was
terminated and retracted, wait is selected.
0 G: G1
1 P: P1 (top-ps)
2 S: S1 (top-state)
3 O: O2 (build-tower)
4 ==> G: G2 (operator no-change)
5 P: P2 (blocks-world)
6 S: S1 (top-state)
7 O: O22 (move-block A table)
8 O: O28 (move-block B C)
9 O: O26 (move-block A B)
10 O: O5 (wait)