Results 1 
2 of
2
SYSTEMATIC SYNTHESIS OF λTERMS
"... Abstract. In this paper we show how to generate terms in the λcalculus that match a given number of function argument result pairs. It appears that the number of λterms is too large to find terms reasonably fast based on the grammar of λcalculus alone. By adding knowledge such as the desired numb ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. In this paper we show how to generate terms in the λcalculus that match a given number of function argument result pairs. It appears that the number of λterms is too large to find terms reasonably fast based on the grammar of λcalculus alone. By adding knowledge such as the desired number of arguments it is possible to synthesize λterms effectively for some interesting examples. This yields surprising terms that are unlikely to be found by a human. An interesting subproblem is the determination of suitability of candidate terms based on equivalence of terms. We used an approximation of equivalence by a finite number of reduction steps. This implies that the test for equivalence can also yield the value undefined. Fortunately the test system used is able to handle undefined test results. For Henk Barendregt on his sixtieth birthday 1.
Testing an Optimising Compiler by Generating Random Lambda Terms
"... This paper considers random testing of a compiler, using randomly generated programs as inputs, and comparing their behaviour with and without optimisation. Since the generated programs must compile, then we need to take into account syntax, scope rules, and type checking during our random generatio ..."
Abstract
 Add to MetaCart
This paper considers random testing of a compiler, using randomly generated programs as inputs, and comparing their behaviour with and without optimisation. Since the generated programs must compile, then we need to take into account syntax, scope rules, and type checking during our random generation. Doing so, while attaining a good distribution of test data, proves surprisingly subtle; the main contribution of this paper is a workable solution to this problem. We used it to generate typed functions on lists, which we compiled using the Glasgow Haskell compiler, a mature production quality Haskell compiler. After around 20,000 tests we triggered an optimiser failure, and automatically simplified it to a program with just a few constructs.