How does Soar decide which conditions appear in a chunk?
Soar works out which conditions to put in a chunk by finding all the productions that led to the final result being created. It sees which of those productions tested parts of the superstate and collects all those conditions together. For example: (S1 ^name top ^size large ^color blue ^superstate nil) ;# The superstate ——————————— ;# Conceptual boundary (S2 ^superstate S1) ;# Newly created subgoal. sp {production0 (state ^superstate nil) –> (^size large ^color blue ^name top)} If we have: sp {production1 (state ^superstate) (^size large) –> (^there-is-a-big-thing yes)} and sp {production2 (state ^superstate) (^color blue) –> (^there-is-a-blue-thing yes)} and sp {production3 (state ^superstate) (^name top) –> (^the-superstate-has-name top)} and sp {production1*chunk (state ^there-is-a-big-thing yes ^there-is-a-blue-thing yes ^superstate) –> (^there-is-a-big-blue-thing yes)} and working memory contains (S1 ^size large ^color blue) this will lead to the chunk: s