abstract = "Standard GP, chiefly concerned with evolving functions
which are mappings from inputs to output, is not Turing
Complete. This paper raises issues resulting from
attempts at extending standard GP to Turing Complete
representations. Firstly, there is a problem when a
contiguous piece of code is moved to a new location (in
a different program) by crossover. In general its
functionality will be altered if global memory is used,
as other parts of the program may access the same piece
of memory. Secondly, traditional crossover does not
respect modules. Crossover can disrupt a group of
instructions that were working together (e.g. in the
body of a loop) in one parent, but end up separated in
two different offspring after reproduction.
A crossover operator is proposed that only operates at
the boundaries of modules. The identification of module
boundaries is made easy by using a representation in
which explicit modules are defined, in contrast with
other representations where the module boundaries would
have to be identified by some other means.
The halting problem is a central issue, however as a
consequence of this crossover operator we are more
likely to produce self terminating programs, thus
saving time when testing.",