In what follows I will describe details of the system used in the experiments.
Architecture. The internal state consists of addressable cells with addresses ranging from 0 to (instead of ranging from 1 to -- this is due to a pecularity of C, the implementation language). are the current contents of the cell with address . Instructions and arguments are encoded by a fixed set of integer values . For each value in , there is an instruction head with integer-valued arguments, where is the instruction blocksize, and is a multiple of . In the experiments I use (there are at most six arguments per instruction), , and . See list below for instruction syntax and semantics.
RIGHT and LEFT modules. All and ( ) are vectors of positive, real values that sum up to 1.0. The -th component of () is denoted ( ) for . A variable InstructionPointer (IP) with range always points to one of the module pair's columns. IP is viewed as a modifiable part of the environment.
Initialization. At system birth at time 0, all and are set equal to . All and IP are set to zero. They will never be re-initialized again. To be able to restore modified module columns if necessary, we introduce two initially empty stacks Stack and Stack that allow for variable-sized stack entries, and the conventional push and pop operations. Instructions may change the Boolean variables BlockSSALEFT and BlockSSARIGHT (both are modifiable parts of and initially FALSE at time 0).