Abstraction-Based Genetic Programming