Property Directed Generation of First-Order Test Data

Random testing is a powerful method for verifying program properties. However, as the complexity of the program and properties increases, writing customized input data generators quickly becomes necessary. We present a method for systematic generation of input data by lazy instantiation using meta variables and parallel partial evaluation of properties. This is applied on specification based program verification. We claim that some program verification problems can be handled by systematic generation without the need of writing custom generators, and that some problems, for which writing generators is not a solution and random testing fails, are still simple enough for systematic generation. The system we present is related to functional logic programming.