Go backward to Impasses and subgoals.
Go up to Semantics of the Symbol Level.
Go forward to Input and output.
Learning
========
Soar supports a general learning mechanism, called {chunking}[LairRN86a].
Chunking occurs as a by-product of problem solving in subgoals. Whenever a
result is produced in a subgoal, a *chunk* is created that is a variablized
version of the justification built for the result. Therefore, a chunk is a
production composed of the result and the conditions under which the result
was generated. The conditions are based on those elements of working memory
that were tested by productions in the subgoal and that were linked to a
super-context. When Soar next encounters a similar situation, that chunk
will be used in problem solving to avoid an impasse. Chunks are learned for
any PSCM function that requires a subgoal, such as problem space selection
and proposal, or operator proposal, selection, and application. See Chapter
See Learning in Soar on page See Learning in Soar for complete
details of chunking.
Chunks are *not* learned over attribute impasses (see Section
See Elimination of impasses on page See Elimination of impasses). This is
because the conditions that lead to an attribute impasse cannot be detected
until the impasse actually occurs, that is, until the impasse object enters
working memory. Context impasses are caused when there are preferences for
competing context objects in working memory. The acceptable preferences for
those objects can be detected, and a subgoal result can be created to allow
Soar to distinguish between them. This processing is captured in a
justification. With attribute impasses, on the other hand, the preferences
that cause them are held only in preference memory, and cannot be detected.
Therefore, no justification can be built that will detect and prevent a
situation that will cause an attribute impasse.