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.