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 recentand 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.