There has been a sporadic discussion as to what is controlled at the Program level, e.g. in 1994 and 2009. Rick’s ‘Program control’ demo updates his 2004 proposal. This exemplifies the view that ‘program control’ is control of whether or not a program is currently ‘running’. I have disagreed with this, most recently last October.
Intuitively, one does not execute a program just in order to know that it is being executed. You don’t perform the steps of a recipe just to know that you are indeed gathering ingredients, mixing, heating, stirring, and so on; you do so in order to taste and enjoy the sauce that results.
A program controls a series of perceptions, the last of which is the conclusion or result ‘returned’ by the program. A program ‘runs’ because another system requires that ‘conclusion’ perception as part of its perceptual input and generates the signal that starts the program. In B:CP, Bill’s desire to read initiates the process of finding his glasses, and what is important there is the result of having his glasses in hand so that he can put them on and read.
Whether or not the procedure is still ‘running’ is of secondary importance. The system that ‘calls’ the program may also monitor whether or not it is running, but only as means of being sure to obtain the final perception that is controlled by the program (its conclusion or result). But really it is the persistence of Bill’s desire to read that ensures that the reference signal for finding his glasses persists even if the search is interrupted, perhaps by a telephone call.
Three terms need to be distinguished.
- Control by means of a program: A system generates a reference signal to ‘run’ a program.
- Control of a program: A system monitors whether or not a program is currently in process of running.
- Program control: A Program-level perceptual function generates reference signals for a series of control loops, such that some CVs are requisite inputs for control of others, in an orderly way, and the last of the series of CVs is the perception controlled by the program and sent to the system that started the program.
How are control loops linked together in an orderly way such that the perceptual inputs which each requires are controlled, leading to control of the perception that the ‘calling’ system requires in its input?
Something must structure the program that is perceived in control of a program; what else, but the system that detects whether or not it is running? I believe this opens a way to reconcile the appearance of controversy in this discussion.
The phrase “a series of control loops” suggests that we start by looking at how a system to control sequences might be structured. Bill (B:CP 145) diagramed a system that could recognize a monosyllable, an Event perception:
That system can observe and recognize the Event perception. To control that Event perception by producing the successive perceptions that it recognizes (i.e. to pronounce that monosyllable) requires some reference input signals for the lower-level loops that control the constituent perceptions. The signal that initiates the first ‘recirculation loop’ and the reference signal below it are branches of the same error output from the comparator above.
Note: The ‘recirculation loop’ at each step perseverates a signal that the given step has been controlled. This could be branched up to some system that does control of the the event-control process (is it running or not?). It is not the only way to do on/off control of the process.
This structure is best understood as the perceptual input function (PIF) for the comparator above it. We haven’t done much modeling of input functions. Below the Event level, perceptual signals generally enter a perceptual input function concurrently, though it is often the case that not all need be present, or that some may come from lower systems that are controlled in imagination mode.
Here, a perceptual signal is controlled and enters the PIF only when a reference signal for it is sent to the lower subsystem that controls that signal, and only after that signal is controlled is a reference sent to the next subsystem. The sequence and timing is determined by the structure of the PIF.
An Event is brief, each of its successive inputs is transient, and it cannot be interrupted and resumed. All that matters is that the Event has occurred. An arpeggiated chord is still a chord, and Bach develops chord sequences in the solo cello suites equally as in keyboard and ensemble music.
A Sequence need not be temporally compact, and it can be interrupted and resumed. The PIF structure proposed above for event control can serve for sequence control, with one change: instead of merely returning news of completion, it returns the last perception controlled in the sequence.
This signal could equally well serve as “news of completion” for Event control. In each case, some other system generates a reference signal at the reference input function (RIF) of the comparator at the top of the diagram. Given its nature (an Event is brief, well-known, well-practiced) all that is needed at that level is a signal that out of the finite inventory of familiar Event perceptions this one has occurred. But a Sequence has a purpose that is served by controlling the last of its series of CVs. Only when you finish the list of steps can you taste the sauce.
When the interrupting Sequence provides control of a perception that is required input in the main Sequence, that is like a subroutine in a program. If the required CV is already present, the reference signal for it generates no error to initiate the sub-Sequence; if the CV is not already present, the reference signal for it generates an error signal that initiates the sub-Sequence. This is the structure of a simple IF/THEN conditional test.
We may expect that control at any point in a given sub-Sequence may require input of more than one perceptual variable into a perceptual input function, any one or more of which may be provided by Sequence control. Sometimes several sequences can be alternative means of control (attach a plate by gluing, nailing, screwing, bolting). This has the external appearance of a program choice-point. Several kinds of branches are possible.
The perceptual signal controlled at the conclusion of sequence n is part of the perceptual environment available to the input functions of the set of candidate sequences {*mi…j}. I do not know of a way to test the ‘match’ of a perception to an input function other than by controlling it. This can be control in imagination mode.
Subjective investigation of sequence control, and the assembly of sequences to attain a result, suggests to me that we select one branch over another by controlling them in imagination until we find a pathway through them that (in imagination) leads to controlling the finally desired result with the least adverse side effects and the fewest disturbances and other failures of control that are imagined based on memory.
That which returns the strongest signal is selected (flip-flop). (IF … THEN code must use a static symbolic representation to represent the dynamic perceptual conditions under which one or another of these alternatives has a stronger signal.) If the selected sequence does not control successfully, the candidate next step with the now strongest signal is selected as above. It may be that candidate paths are tested concurrently. Awareness is not required.
In the case that Bill describes as “a ‘tree,’ one test leading to a choice of succeeding tests without further intervening operations” the set of alternative sequences are themselves programs. Nothing special is required in addition.
If Sequence m fails to control its last input, and there are no alternatives, the program fails (error signal).
The program PIF in the figure above does not specify a desired result. Manipulate the buttons on the calculator and use whatever number results. Carry out the TCV until you have identified the CV, whatever it turns out to be. The Program-invoking or Sequence-invokin system initiates the program with no reference signal for the perception that its last step controls. This is like a subroutine call in computer code. An investigation, where the outcome is not known, is of broad and general use in life.
The desired outcome may be known in advance. When the CV that is controlled by the last loop of a sequence or program has a reference value specified by a system that is using that Sequence or Program to obtain that value of that perception, error controlling the final loop branches back to the entry point of the reference signal for the first loop.
A class of simple examples is represented in computer program code by logical loops written WHILE … DO, UNTIL … DO, etc. “Add salt to taste.”
Perseveration of prior steps by those ‘recirculation loops’ enables reconsideration of earlier branch-points when alternatives at a given branch-point don’t pan out. Capacity to do this is measured by the ‘rigid/flexible’ parameter of cognitive temperament that Rokeach studied. (The ‘open/closed’ parameter is a measure of capacity or willingness to control in imagination in ways that depart from memory of controlling through the environment, extending familiar analogies.)
A fourth term is control of Program structure. If the program fails in all alternatives (all that were tried) a higher-level system may control perceptions of the structure of the program. It controls constituent steps (and their alternatives) in imagination and alters the program by trial and error. This may not be the same system that initiated the program but was unable to control using perceptual input from the program (from its final step). This kind of control is also used for planning.
There is much still to be understood, and none of it has been demonstrated, but even in outline I believe the above reconciles the appearance of controversy in this discussion. The perceptual input function of a program-level control system creates the program, and it also perceives whether or not it is running after another system has started it.