The programmer is free to specify any number of legal genetic algorithm constructs and then implement the specified moderators. The unspecified moderators are generated by the compiler, so at the end a combination of compiler generated and user implemented program is obtained. The compiler makes sure that both the user and generated functions are called when needed. For example, a chromosome initializer will call the associated initializer of every gene member it has.
The minimal DARWIN program is composed of genome definition and its fitness function. All the moderators except the evaluator can be successfully generated by the compiler. So at least a chromosome evaluator or all of the gene evaluators forming a chromosome should be defined in order to have a valid DARWIN program. This restrictions are inherent in the nature of Genetic Algorithms, since at least a solution representation and and a measure of how successful a given solution is, is required. In addition a set of genetic operations is also needed, but as mentioned earlier, these can be automatically generated just by deciding on the genome data representation and domain information.