Much of the theory behind genetic programming is the same as that behind genetic algorithms. The same Darwinian concept of survival-of-the-fittest applies, through genetic operators, but with a twist. The structures that are manipulated are quite different from the coded strings of genetic algorithms. Figure 1 depicts how one might visualize a simple genetic program.
Figure 1: A simple tree structure, (Figure 4.1, from Koza.)
The equivalent LISP expression for this function is (+ 1 2 (IF (> TIME 10) 3 4)). A few notes: