Go backward to Predicates.
Go up to Object representation issues.
Disjunctive tests
.................
Productions in Soar allow disjunctive tests (by using the <<>> syntax,
described in Section See Disjunctions of constants on page
See Disjunctions of constants); these tests match if one of a set of
augmentations appears in working memory. The use of disjunction allows a
production condition to be more general, but just as with predicates,
chunking does not capture that generality. If a disjunction is used in a
production's condition (e.g., for the names of two problem spaces, such as <<
problem-space-1 problem-space-2 >>), a chunk that summarized problem-solving
including a firing of that production would include a test for only one of
the two names, not both (since the chunker only examines contents of working
memory, and not the conditions of productions). This would make the chunk
more specific than necessary.
As an example, consider the case where a production may apply in one of two
problem spaces, problem-space-1 and problem-space-2. Assume it applies in
problem-space-1 in this case. If a disjunctive test ( << problem-space-1
problem-space-2 >>) is used in the production conditions, the chunk will only
test for problem-space-1.
To solve this problem, the disjunction should be reified by creating a new
concept for the disjunction. A symbol can be created which represents the
disjunctive condition, and this symbol will then appear in the conditions of
chunks. Continuing the example, we could create a new augmentation
space-1-or-2 as follows:
(sp problem-space-1-or-2*elaborate*add*space-1-or-2
(goal <g> ^problem-space.name << problem-space-1 problem-space-2 >>)
-->
(<p> ^space-1-or-2 t))
The production that formerly contained the disjunctive test would be
rewritten using the new augmentation instead of the disjunction:
(sp problem-space-1-or-2*the-production
(goal <g> ^problem-space.space-1-or-2 t)
...
And the chunk will test for the following condition:
(<p> ^space-1-or-2 t)
Thus the chunk is general in that it may apply in either problem space.