This model was developed by Richard Young to explain the cognitive development of children in a seriation task. This involves taking blocks from a pile and lining them up by size. Piaget investigated this in The Child's Conception of Number (PSY ED:P 057). He found that the child progressed through three stages:
Here's a set of rules which model the start of stage 2.
f1: push(Goal = add first block) and set(State = continuing task) if Goal = seriate and State = task just started. f2: put block at far left and pop goal stack if Goal = add first block and holding block in hand. a1: push(Goal = add another block) if Goal = seriate. a2: pop goal stack and push(Goal = place this block) if Goal = add another block and holding block in hand. a3: pickup nearest block if Goal = add _ block. p1: put block at right if Goal = place this block. f3: pickup biggest block if Goal = add first block. e1: examine blocks and set BlockOrder = OK or bad if Goal = place this block and new arrangement of blocks exists. e2: pop goal stack if Goal = place this block and BlockOrder = OK. e3: exchange last two blocks if Goal = place this block and BlockOrder = bad. a4: pickup block similar to last if Goal = add another block.
These rules come from page 117 of Learning and Problem Solving 3, Open University Course D303, Block 4, Units 26-28. You can find it in PSY Oversize AA:O 2-O M and in the RSL on the Open University bookcase - 2nd bookcase on left as you go in the back entrance to the Lankester Room.
Some points about the rules:
Goal = ?are stored on a stack in last-on first-off fashion. You can have any number of goals, but only the topmost one is visible to the rule-matcher.
add _ blockwill match either of
add first blockand
add another block.
_is a kind of wild-card.
To simulate, start with a heap of blocks and an STM whose contents is
State = task just started