Abstract:
Property-based testing can be a highly effective form of lightweight verification, but it relies critically on the method used to generate test cases. If we need to test properties of compilers and related tools we should like to have a generator for source programs as test cases. We describe experiments generating functional programs in a core first- order language with algebraic data types. Candidate programs are generated freely over a syntactic representation with positional names. Static conditions for program validity and canonical representatives of a large equivalence classes are defined quite separately.
Our goal is an exhaustive enumeration of all valid canonically represent- ative programs up to some small but useful size.