Most of the 61 tokens below do not appear in the solutions
found by OOPS in the experiments (Section 6).
Still, we list all of them for completeness' sake, and to provide
at least one example way of seeding OOPS with an initial
set of behaviors.
In the following subsections,
any instruction of the form
inst (
)
expects its
arguments
on top of data stack ds, and replaces
them by its return values, adjusting dp accordingly
-- the form
inst() is used for instructions without arguments.
Illegal use of any instruction will cause the currently considered program prefix to halt. In particular, it is illegal to set variables (such as stack pointers or instruction pointers) to values outside their prewired given ranges, or to pop empty stacks, or to divide by zero, or to call a nonexistent function, etc.
Since CPU time measurements on our PCs turned out to be unreliable,
we defined our own, rather realistic time scales.
By definition, most instructions listed below cost exactly
1 unit time step. Some, however, consume more time: Instructions
making copies of strings with length
(such as cpn(n))
cost
time steps;
so do instructions
(such as find(x))
accessing an a priori unknown number
of tape cells;
so do instructions (such as boostq(k))
modifying the probabilities of
an a priori unknown number
of instructions.