Go backward to Subgoal creation for operator application.
Go up to Encoding A Task in Soar.
Go forward to Problem space refinement.
Problem space proposal for subgoal
==================================
Once a subgoal is created, a problem space must be proposed. A problem space
symbol will act as a cue for proposing and selecting the initial state and
operators in the subgoal. Operators should be defined such that any sequence
of operator applications that produces a final state that satisfies the
constraints of the problem. For example, in the Blocks World, changing the
name of a block is not a legal operation and would violate an implicit
constraint in the problem description.
If the problem space selection can be made based on the name of the goal,
then a simple production such as the one below will be sufficient for problem
space proposal.
(sp build-tower*propose*space*blocks-world
(goal <g> ^name build-tower)
-->
(<g> ^problem-space <p>)
(<p> ^name blocks-world))
Since the variable <p> only appears in the action, it will be bound to a
newly generated symbol, starting with the first letter of the variable
(something like P2). The second occurrence of <p> will use this same symbol.
The goal is augmented with a name that can be tested by later productions.
After this production fires and the next decision is made, the cumulative
trace at (watch 0) is as follows:
0: ==>G: G1
1: P: P1 (top-ps)
2: S: S1 (top-state)
Initial state has A on B and B and C on the table.
The goal is to get A on B on C on the table.
3: O: O2 (build-tower)
4: ==>G: G2 (operator no-change)
5: P: P2 (blocks-world)