Go backward to Blocks World knowledge.
Go up to Encoding A Task in the PSCM.

PSCM trace of Blocks World
--------------------------

Below is a trace of the PSCM level behavior of the system using the knowledge
presented above.  In addition, there is default knowledge to select an
initial problem space and state in which the task can be attempted (D1 and
D2).  Each numbered item in the trace below represents a decision so that the
PSCM-level trace can be compared with the SLCM-level trace in Section 
See Encoding a task on page See Encoding a task.  Notice that except for
operator application, the general operation of the system is to propose
objects, compare them and then select the best object.

[0] The initial goal is generated and selected.     
     
     D1 proposes top-ps as the problem space for the initial goal.
     
[1] The initial problem space, top-ps, is selected.     
     
     D2 proposes the initial state for top-ps.
     
[2] The initial state is selected.     
     
     TK1 proposes the build-tower operator that performs the Blocks
     World task.
     
[3] build-tower is selected as the operator to apply.     
     
[4] A subgoal arises because build-tower cannot be performed     
     directly, but must be achieved by operators in another problem space.
     
     TK3 proposes the blocks-world problem space for the new subgoal.
     
[5] blocks-world is selected as the problem space for the subgoal.     
     
     TK4 proposes the initial state, which is the state of the original goal.
     We will assume that block A is on block B, and blocks B and C are on the
     table.
     
[6] The initial state is selected for the subgoal.     
     
     TK5 proposes all of the legal instantiations of the
     move-block operator (the first argument is the block to be moved
     to a new location): move-block(A,C), move-block(C,A),
     move-block(A,Table).
     
     SK3 avoids using either move-block(A,C) or
     move-block(C,A), because neither of these moves a block on top of
     its desired block.
     
[7] move-block(A,Table) is selected as the operator for the     
     subgoal.
     
     TK6 applies the operator by modifying the state.
     
     TK5 proposes all of the new legal instantiations of the 
     move-block operator: 
      move-block(A,C),
     move-block(C,A), move-block(A,B), move-block(B,A), 
     move-block(C,B), and move-block(B,C).
     
     SK1 prefers move-block(A,B) over move-block(B,A),
     move-block(C,B), 
      move-block(A,C), and move-block(C,A).
     
     SK1 prefers move-block(B,C) over move-block(B,A),
     move-block(C,B),  
     move-block(A,C), and move-block(C,A).
     
     SK2 prefers move-block(B,C) over move-block(A,B).
     
     SK3 avoids using move-block(A,C), move-block(C,A),
     move-block(C,B), 
      move-block(B,A).
     
[8] move-block(B,C) is selected as the operator for the subgoal.     
     
     TK6 applies the operator by modifying the state.
     
     TK5 proposes all of the new legal instantiations of the move-block
     operator:
      move-block(A,B), move-block(B,A), move-block(B,Table)
     
     SK1 prefers move-block(A,B) over move-block(B,A) and
     move-block(B,table).
     
     SK3 avoids move-block(B,A).
     
[9] move-block(A,B) is selected as the operator for the subgoal.     
     
     TK6 applies the operator by modifying the state.
     
     TK2 detects that the build-tower operator is completed.

In this example, there was sufficient knowledge to perform each of the PSCM
functions in the subgoal so that no additional impasses arose.  If any of the
knowledge used in the subgoal had been missing, a subgoal would have been
used to provide the missing knowledge.  For example, if there had not been
any search control knowledge for selecting the operator (SK1 and SK2 had been
missing), a subgoal would have been generated to select between the proposed
instantiations of move-block.  One strategy that might be useful is to
perform a lookahead search to determine which of these operators will lead
toward the goal.