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 _ block will match either of add
first block and 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