The basic genetic programming framework is composed of three modules: one that defines the operators that are available to the program trees, one that defines the classes and operations that compose the program trees, and another that provides the mechanisms needed to have a population of program trees (including reproductive functions). While the first module will change based upon the application, the latter two are general and do not need to be altered to fit the particular problem being solved.
To use the framework, an application-specific module is linked in to the others. This module must provide the function that will be used to assess the fitness of each program tree in the population, as well as variable references into the problem being solved. This module also contains the main() function that is responsible for creating the initial population and controlling the reproductive process.