This document describes a simple Soar simulation for children's addition strategies, including
Our goal in modeling these strategies was to attempt to identify the key pieces knowledge that allows an agent to shift from one to another. We have attempted to create our model in a psychologically plausible way, making use of both an "internal" cognitive engine and "external" perceptual/motor systems.
This simulation exists as an implemented software system: the final sections of this document describe how to install and use the simulation software.
Note. Currently, the SUM and SHORTCUT-SUM strategies have been modeled. The FIRST and MIN strategies are still under construction.
This section describes the structure of the simulation, including the input representation, the output command language, and the internal operators used for problem solving.
The input representation consists of the stimuli available to the agent from the outside world. We have chosen to use a simple attribute-value representation, structured as follows:
(P1 ^instance-of problem ^addend A1 ^addend A2)
(A1 ^instance-of addend ^value { one two three four five })
(A2 ^instance-of addend ^value { one two three four five })
(A1 ^instance-of agent ^hand H1 ^hand H2
^aural-buffer { empty one two three ... ten }
^attended-object { F1 F2 F3 .. F10 })
(H1 ^instance-of hand ^side left
^finger F1 ^finger F2 ^finger F3 ^finger ^F4 ^finger F5
^fist { yes no } ^subitized-count { one two three four five })
(F1 ^name thumb ^raised { yes no })
(F2 ^name index ^raised { yes no })
(F3 ^name middle ^raised { yes no })
(F4 ^name ring ^raised { yes no })
(F5 ^name pinkie ^raised { yes no })
(H2 ^instance-of hand ^side right
^finger F6 ^finger F7 ^finger F8 ^finger ^F9 ^finger F10
^fist { yes no } ^subitized-count { one two three four five })
(F6 ^name thumb ^raised { yes no })
(F7 ^name index ^raised { yes no })
(F8 ^name middle ^raised { yes no })
(F9 ^name ring ^raised { yes no })
(F10 ^name pinkie ^raised { yes no })
Uppercase identifiers (e.g., P and A1two, yes) represent constant values for attributes. Values contained in braces (e.g., { yes no }) represent multiple values that an attribute may take on.
Note that
Via the use of motor commands, the agent may alter the world or change the stimuli that it receives. We have made the following output commands available to our agent:
The agent uses a problem-space representation to compute the answers to the addition problems that it is posited. The operators that are available include:
This section describes in detail how each strategy is performed in the simulator. An actual trace is provided for the specified strategy.
The key differences in strategy between SUM, SHORTCUT-SUM, and FIRST/MIN are:
I hypothesize that this change in the termination criteria leads to the change in the operator's implementation. Specifically, if the agent has available explicit knowledge of the termination conditions for REPRESENT-SECOND-ADDEND, then it can alter the structure of the implementation subspace. In this case, knowing that the only requirement for termination is that the aural buffer contain the value of the first addend could lead to the immediate selection of an operator that would satisfy that condition.
Each strategy's key features are summarized below.
| Proposal Conditions | ||
| Strategy | Represent-First-Addend | Represent-Second-Addend |
| SUM |
AuralBuffer = empty
MarkerSet created |
AuralBuffer = empty
MarkerSet created |
| Shortcut-SUM |
AuralBuffer = empty
MarkerSet created |
MarkerSet created |
| FIRST/MIN |
AuralBuffer = empty
MarkerSet created |
MarkerSet created |
| Termination Criteria | ||
| SUM |
Raised fingers counted
SubitizedCount = Addend |
Raised fingers counted
SubitizedCount = Addend |
| Shortcut-SUM |
Raised fingers counted
SubitizedCount = Addend |
Raised fingers counted
SubitizedCount = Addend |
| FIRST/MIN | AuralBuffer = Addend |
Raised fingers counted
SubitizedCount = Addend |
| Implementation | ||
| SUM |
MakeFist
RaiseFinger CountFinger |
MakeFist
RaiseFinger CountFinger |
| Shortcut-SUM |
MakeFist
RaiseFinger CountFinger |
MakeFist
RaiseFinger CountFinger |
| FIRST/MIN | Say FirstAddend |
MakeFist
RaiseFinger CountFinger |
In the SUM strategy, the child (1) counts out the first addend on his or her left hand, (2) counts out the second addend on his or her right hand, and (3) counts up both hands to report the answer. A trace on the problem "3 + 2 = ?" is shown below.
0: ==>S: S1
1: O: O2 (assign-addend) (I46 I6)
2: O: O5 (assign-addend) (I51 I25)
3: O: O6 (start-count)
4: O: O8 (represent-first-addend) (I46)
5: ==>S: S2 (operator no-change)
6: O: O10 (make-fist) (I6)
7: O: O11 (raise-finger) (I6 thumb)
8: O: O12 (attend-to-finger) (I10)
9: O: O13 (count-finger) (I10 one)
10: O: O14 (raise-finger) (I6 index)
11: O: O15 (attend-to-finger) (I13)
12: O: O17 (count-finger) (I13 two)
13: O: O18 (raise-finger) (I6 middle)
14: O: O19 (attend-to-finger) (I16)
15: O: O21 (count-finger) (I16 three)
16: O: O7 (start-count)
17: O: O25 (represent-second-addend) (I51)
18: ==>S: S3 (operator no-change)
19: O: O29 (make-fist) (I25)
20: O: O30 (raise-finger) (I25 thumb)
21: O: O31 (attend-to-finger) (I29)
22: O: O32 (count-finger) (I29 one)
23: O: O33 (raise-finger) (I25 index)
24: O: O34 (attend-to-finger) (I32)
25: O: O36 (count-finger) (I32 two)
26: O: O24 (start-count)
27: O: O40 (count-out-hands)
28: ==>S: S4 (operator no-change)
29: O: O41 (attend-to-finger) (I10)
30: O: O46 (count-finger) (I10 one)
31: O: O42 (attend-to-finger) (I13)
32: O: O48 (count-finger) (I13 two)
33: O: O43 (attend-to-finger) (I16)
34: O: O50 (count-finger) (I16 three)
35: O: O44 (attend-to-finger) (I29)
36: O: O52 (count-finger) (I29 four)
37: O: O45 (attend-to-finger) (I32)
38: O: O54 (count-finger) (I32 five)
39: O: O55 (report-answer) (five)
40: O: O56 (halt)
The child initially assigns the addends to each hand. In this strategy, the REPRESENT-FIRST-ADDEND operator has two preconditions: (1) that there is a set of markers that can be used for counting, and (2) that the aural buffer is empty. Therefore, REPRESENT-FIRST-ADDEND is not proposed until after the START-COUNT operator fires. REPRESENT-ADDEND enters a subgoal which terminates when three fingers (the value of the first addend) are raised and each finger has been counted.
For the second addend, REPRESENT-SECOND-ADDEND must wait until the aural buffer has been cleared (just as with REPRESENT-FIRST-ADDEND), so START-COUNT is proposed first, having the effect of both clearing the aural buffer and creating a new, empty set of markers for counting. Now REPRESENT-SECOND-ADDEND can be proposed, and the second hand is counted out just like the first.
COUNT-OUT-HANDS will be proposed when (1) there are no addends left to represent and (2) the aural buffer is clear. START-COUNT fires first, clearing the aural buffer, so now COUNT-OUT-HANDS is proposed. Because it is an abstract operator, a subgoal is entered which terminates when all the raised fingers have been marked as counted.
At this point, REPORT-ANSWER will be proposed, it's proposal contingent on the fact that (1) both addends have been represented, and (2) every raised finger is present in the marker set. This terminates problem solving with the correct answer.
In the SHORTCUT-SUM strategy, the child (1) counts out the first addend on his or her left hand, and then (2) counts up from the first addend to represent the value of the second addend on his or her right hand. The answer reported is then the last number spoken once the count is complete. A trace is shown below.
0: ==>S: S1
1: O: O2 (assign-addend) (I46 I6)
2: O: O5 (assign-addend) (I51 I25)
3: O: O6 (start-count)
4: O: O9 (represent-addend) (I51)
5: ==>S: S2 (operator no-change)
6: O: O10 (make-fist) (I25)
7: O: O11 (raise-finger) (I25 thumb)
8: O: O12 (attend-to-finger) (I29)
9: O: O13 (count-finger) (I29 one)
10: O: O14 (raise-finger) (I25 index)
11: O: O15 (attend-to-finger) (I32)
12: O: O17 (count-finger) (I32 two)
13: O: O8 (represent-addend) (I46)
14: ==>S: S3 (operator no-change)
15: O: O19 (make-fist) (I6)
16: O: O20 (raise-finger) (I6 thumb)
17: O: O21 (attend-to-finger) (I10)
18: O: O23 (count-finger) (I10 three)
19: O: O24 (raise-finger) (I6 index)
20: O: O25 (attend-to-finger) (I13)
21: O: O27 (count-finger) (I13 four)
22: O: O28 (raise-finger) (I6 middle)
23: O: O29 (attend-to-finger) (I16)
24: O: O31 (count-finger) (I16 five)
25: O: O33 (report-answer) (five)
26: O: O34 (halt)
As with SUM, the child initially assigns the addends to each hand. In this strategy, REPRESENT-FIRST-ADDEND has not changed, so it's proposal and implementation is identical to that in SUM. As with SUM, REPRESENT-FIRST-ADDEND enters a subgoal, counting out the first addend on one hand. Also as in SUM, it terminates when it detects that both (1) the number of fingers raised on the hand equals the value of the addend and (2) no finger has gone uncounted.
At this point, however, SUM and SHORTCUT-SUM diverge. Because the proposal of REPRESENT-SECOND-ADDEND in SHORTCUT-SUM is not contingent on the aural buffer being clear, it is immediately proposed for the second addend after counting has completed for the first addend.
As the second REPRESENT-SECOND-ADDEND is entered, counting continues from three rather than being re-started at one as in SUM. However, the subgoal's termination conditions remain the same as in SUM: namely, that the number of fingers raised on the hand equals the value of the addend, and that each finger has been counted.
Once the second addend has been represented, REPORT-ANSWER will immediately be proposed because the marker set will contain all the fingers, and each addend will have been represented. Hence, SHORTCUT-SUM terminates with the correct answer.
Not yet implemented!
Not yet implemented!
If these models are correct, then there are a couple of conclusions that can be drawn. First, The SUM-to-SHORTCUT-SUM shift couldn't occur because of any kind of correlational learning. In every case when the operator is successfully executed, the aural buffer will be empty, hence it would strongly enforce the necessity of this feature. Therefore, it would seem that there would have to be a metacognitive realization of some sort to introduce this change, which would unfortunately be quite complex. [I need to go back and compare this implementation with Randy's to see how he got the shift to occur.]
Second, it seems fairly obvious that the condition AuralBuffer = Addend could be added to the termination criteria of REPRESENT-FIRST-ADDEND through a correlational mechanism. In every case where REPRESENT-FIRST-ADDEND would be executed, the value of the aural buffer would exactly equal the value of the first addend. On the other hand, it's not clear to me how the other two could be dropped without some kind of metacognitive analysis.
Finally, once the termination criteria for REPRESENT-FIRST-ADDEND have been altered, it would seem to be pretty straightfoward to alter the operator's implementation, given that there was some kind of declarative access to the termination criteria. Specifically, if it becomes clear that the most important criteria for termination is that the addend's value is represented in the aural buffer, and knowledge was available that said, "if you want value X in the aural buffer, then say X", the implementation could immediately be changed.
This section briefly describes how to install and use the simulator. 4.1 Installation
Note that this requires Soar 7.0.3 to run properly.
Installing the software is pretty easy. The only strangeness is that there is a separate set of "generic" Soar utility files that you also need to install, and you then have to tell the SUM-TO-MIN software how to find them...
simulator.tcl, line 145, which specifies
the variable UTILITIES_DIR. Set this variable to the
directory where you unpacked the utilities.tar.gz files
to.
The user interface is pretty simple right now.
As you run the simulation, you'll see fingers lowered and raised on the hand. A clear "outlined" finger is lowered, a filled finger in raised, and an object that is filled in red is the object that is currently being attended to. Above both hands is the aural buffer, which contains the value of the last word that was spoken.