Systematic synthesis of functions

In this paper we introduce a new technique to synthesize functions matching a given set of input-output pairs. Using techniques similar to defunctionalisation the abstract syntax tree of the candidate functions is specified at a high level of abstraction. We use a recursive data type to represent the syntax tree of the candidate functions. The test system G∀ST is used for the systematic synthesis of candidate functions and the selection of functions matching the given condition. The representation of candidate functions as data structures gives us full control over them and the transformation of the syntax tree to the actual function is straight forward. Instances of the syntax tree are generated by a generic algorithm that can be tailored easily to specific needs. This yields a very flexible system to synthesize clear (recursive) function definitions efficiently.

[1]  Johan Jeuring,et al.  Generating generic functions , 2006, WGP '06.

[2]  C. Clack,et al.  Recursion , Lambda Abstractions and Genetic Programming , 2022 .

[3]  Henry Lieberman,et al.  Watch what I do: programming by demonstration , 1993 .

[4]  Debasish Banerjee A methodology for synthesis of recursive functional programs , 1987, TOPL.

[5]  Stephen Gilmore,et al.  6th Symposium on Trends in Functional Programming TFP 2005 , 2005 .

[6]  D SummersPhillip A Methodology for LISP Program Construction from Examples , 1977 .

[7]  Ute Schmid,et al.  Inductive Synthesis of Functional Programs , 2003, Lecture Notes in Computer Science.

[8]  Daniel S. Weld,et al.  Programming by Demonstration , 2021, Computer Vision.

[9]  Olivier Danvy,et al.  Defunctionalization at work , 2001, PPDP '01.

[10]  John C. Reynolds Definitional Interpreters for Higher-Order Programming Languages , 1998, High. Order Symb. Comput..

[11]  Susumu Katayama Systematic search for lambda expressions , 2005, Trends in Functional Programming.

[12]  Pieter Koopman,et al.  Generic Generation of Elements of Types , 2005 .

[13]  Ute Schmid Automatic Synthesis of XSL-Transformations from Example Documents , .

[14]  Lambert G. L. T. Meertens,et al.  Paramorphisms , 2005, Formal Aspects of Computing.

[15]  Marinus J. Plasmeijer,et al.  Automatic Testing of Higher Order Functions , 2006, APLAS.

[16]  Marinus J. Plasmeijer,et al.  Gast: Generic Automated Software Testing , 2002, IFL.

[17]  Rinus Plasmeijer,et al.  Concurrent Clean Language Report - version 1.3 , 1998 .

[18]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.