[From Bill Powers (940603.1340 MDT)]
Tom Bourbon (940603.1108) --
A nice demonstration of executing a program without executing a
program of outputs! This is a very subtle demonstration that takes a
lot of thought to grasp. The most important thing to understand about
hierarchical control is that the levels _specialize in a certain kind
of control_. Controlling a sequence of relationships does not require
selecting the actions that will result in producing relationships in a
certain sequence. It requires only specifying, in a certain sequence,
THAT A CERTAIN RELATIONSHIP SHALL BE MAINTAINED. It is not the
reponsibility of the sequencing or programming level to maintain that
relationship, or to find the actions that will do so in the presence
of disturbances. The same sequence of relationships can be maintained
even though the outputs do not repeat their sequence.
Your use of a time-dependent variable to index the sequence was
ingenious.
Here are some exploratory thoughts about another experiment:
Suppose we have one auxiliary perception, a square which can appear on
the screen. Let's set up two program-level control systems.
The idea is that if the square is present, sequence 1 alone should be
running, but if it's absent, sequence 2 alone should be running. The
subject can switch between sequences by pressing key A or key B.
The program-level operation could be organized like this:
if(program reference signal TRUE) then /*this is the comparator*/
{
If (square and ((not sequence 1) or sequence 2)) then
{
sequence reference signal 1 = TRUE;
sequence reference signal 2 = FALSE;
}
else
If (not square and ((not sequence 2) or sequence 1) then
{
sequence reference signal 1 = FALSE;
sequence reference signal 2 = TRUE;
}
}
else [if program reference signal FALSE]
{
sequence reference signal 1 = FALSE;
sequence reference signal 2 = FALSE;
}
The assumption here is that the output of the logical control system
is a latch: if the output is set to TRUE, it stays TRUE until
explicitly set to FALSE, and the converse. The comparator has two
outputs, one for each tested condition.
It's assumed that each sequence will complete itself and start again
if the reference signal is still TRUE, but will not complete if
terminated before the end; also, it ceases immediately that the
reference signal becomes FALSE and resets to the start when the
reference signal goes from FALSE to TRUE. Also notice that if both
sequences start to run (in some cases this can be possible), the
unwanted sequence will be turned off. If the reference signal for
maintaining the program in operation is FALSE, both sequences stop.
It may seem that the above is equivalent to a stimulus-response system
with a reference signal that can turn it on or off:
If(program reference signal = TRUE) then
if(square) then
sequence reference signal 1
else
sequence reference signal 2
However, if some disturbance caused the wanted sequence to terminate
or the unwanted one to start, the S-R version would not correct the
error because the actual state of the sequences is not part of the
input. Also, if the correct situation already exists, the S-R system
would issue the outputs anyway.
The above is a design that would do what the instructions say.
However, real human subjects do not necessarily interpret the logic of
instructions as intended. To see what the actual program is that a
human participant is running, it's necessary to run the experiment
with all possible conditions, including unwanted sequences and
unwanted terminations of sequences (disturbances).
···
--------------------------------------------------------------------
Best,
Bill P.