Recall that the instruction set should contain instructions for invoking or calling code found below , for copying such code into , and for editing the copies and executing the results (examples in Appendix A).
Now suppose there is an ordered sequence of tasks . Inductively suppose we have solved the first tasks through programs stored below address , and that the most recently discovered program starting at address actually solves all of them, possibly using information conveyed by earlier programs . To find a program solving the first tasks, Realistic OOPS invokes Try as follows (using set notation for task rings, where the tasks are ordered in cyclic fashion--compare basic Method 3.1):
1. Set instruction pointer (start address of code solving all tasks up to ).
IF Try ( ) then exit.
(This means that half the search time is assigned to the most recent and all possible prolongations thereof).
2. IF it is possible to initialize all tasks within time :
Set local variable (first unused address); for all set .
IF Try ( ) set and exit.
(This means that half the time is assigned to all new programs with fresh starts).
3. Set , and go to 1.
Therefore, given tasks first initialize ; then for invoke Realistic OOPS to find programs starting at (possibly increasing) address , each solving all tasks so far, possibly eventually discovering a universal solver for all tasks in the sequence.
As address increases for the -th time, is defined as the program starting at 's old value and ending right before its new value. Program () may exploit by calling it as a subprogram, or by copying into some state , then editing it there, e.g., by inserting parts of another somewhere, then executing the edited variant.