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