Go backward to Task operator termination.
Go up to Encoding A Task in Soar.
Go forward to Using lookahead search.

Monitoring the problem solving
==============================

To help keep track of the progress of problem solving, productions can be
added that trace the state of working memory.  For example, the following
productions print out the ^ontop relations in the state and print the
application of operators:

(sp blocks-world*monitor*state*relation*ontop
    (goal <g> ^problem-space.name blocks-world 
              ^state.object-dynamic <ob-dyn>)
    (<ob-dyn> ^object-static.name <top-ob-name>
              ^ontop.name <under-ob-name>)
    -->
    (write (crlf)
           |  ontop(| <top-ob-name>
           |,| <under-ob-name> |)|))

(sp blocks-world*monitor*operator-application*move-block
    (goal <g> ^operator <o>)
    (<o> ^name move-block
         ^moving-block.name <mob-name>
         ^destination.name <dob-name>)
    -->
    (write (crlf) 
           |  APPLIED | <o> 
           |: move-block(| <mob-name> 
           |,| <dob-name> 
           |)|))

Information can also be traced using the trace formats (see Section 
See Trace formats on page See Trace formats).