Stochastic synthesis of recursive functions made easy with bananas, lenses, envelopes and barbed wire

Stochastic synthesis of recursive functions has historically proved difficult, not least due to issues of non-termination and the often ad hoc methods for addressing this. This article presents a general method of implicit recursion which operates via an automatically-derivable decomposition of datatype structure by cases, thereby ensuring well-foundedness. The method is applied to recursive functions of long-standing interest and the results outperform recent work which combines two leading approaches and employs ‘human in the loop’ to define the recursion structure. We show that stochastic synthesis with the proposed method on benchmark functions is effective even with random search, motivating a need for more difficult recursive benchmarks in future.

[1]  Tina Yu A Higher-Order Function Approach to Evolve Recursive Programs , 2006 .

[2]  Jerry Swan,et al.  Template method hyper-heuristics , 2014, GECCO.

[3]  Simon M. Lucas,et al.  Learning Recursive Functions with Object Oriented Genetic Programming , 2006, EuroGP.

[4]  Lee Spector,et al.  Assessment of problem modality by differential performance of lexicase selection in genetic programming: a preliminary report , 2012, GECCO '12.

[5]  Jerry Swan,et al.  Dependency Injection for Programming by Optimization , 2017, ArXiv.

[6]  Jerry Swan,et al.  Genetic Programming \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\varvec{+}$$\end{document}+ Proof Search \document , 2017, Journal of Automated Reasoning.

[7]  Brad Alexander,et al.  Boosting Search for Recursive Functions Using Partial Call-Trees , 2014, PPSN.

[8]  Ute Schmid,et al.  Data-Driven Detection of Recursive Program Schemes , 2010, ECAI.

[9]  Thomas Stützle,et al.  Ant Colony Optimization , 2009, EMO.

[10]  Mariusz Boryczka,et al.  Ant Colony Programming for Approximation Problems , 2002, Intelligent Information Systems.

[11]  Alex Alves Freitas,et al.  Evolving recursive programs using non-recursive scaffolding , 2012, 2012 IEEE Congress on Evolutionary Computation.

[12]  L. Huelsbergen Learning Recursive Sequences via Evolution of Machine-Language Programs , 1999 .

[13]  Maarten Keijzer,et al.  The Push3 execution stack and the evolution of control , 2005, GECCO '05.

[14]  Graham Hutton,et al.  A tutorial on the universality and expressiveness of fold , 1999, Journal of Functional Programming.

[15]  F. William Lawvere,et al.  Conceptual Mathematics: A First Introduction to Categories , 1997 .

[16]  Tina Yu,et al.  Performance-Enhanced Genetic Programming , 1997, Evolutionary Programming.

[17]  Mengjie Zhang,et al.  Genetic programming for solving common and domain-independent generic recursive problems , 2017, 2017 IEEE Congress on Evolutionary Computation (CEC).

[18]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[19]  G. Malcolm,et al.  Data Structures and Program Transformation , 1990, Sci. Comput. Program..

[20]  Tina Yu,et al.  Structure abstraction and genetic programming , 1999, Proceedings of the 1999 Congress on Evolutionary Computation-CEC99 (Cat. No. 99TH8406).

[21]  Riccardo Poli,et al.  A Field Guide to Genetic Programming , 2008 .

[22]  Tomoharu Nagao,et al.  Graph Structured Program Evolution: Evolution of Loop Structures , 2010 .

[23]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.

[24]  Simon M. Lucas,et al.  Evolving a Statistics Class Using Object Oriented Evolutionary Programming , 2007, EuroGP.

[25]  Brad Alexander,et al.  Using Scaffolding with Partial Call-Trees to Improve Search , 2016, PPSN.

[26]  Wojciech Jaskowski,et al.  Better GP benchmarks: community survey results and proposals , 2012, Genetic Programming and Evolvable Machines.

[27]  Peter A. Whigham,et al.  Genetic Approaches to Learning Recursive Relations , 1994, Evo Workshops.

[28]  Lee Spector,et al.  Solving Uncompromising Problems With Lexicase Selection , 2015, IEEE Transactions on Evolutionary Computation.

[29]  John C. Reynolds,et al.  Three Approaches to Type Structure , 1985, TAPSOFT, Vol.1.

[30]  Simon M. Lucas,et al.  Recursion in tree-based genetic programming , 2017, Genetic Programming and Evolvable Machines.

[31]  M. Nishiguchi,et al.  Evolution of recursive programs with multi-niche genetic programming (mnGP) , 1998, 1998 IEEE International Conference on Evolutionary Computation Proceedings. IEEE World Congress on Computational Intelligence (Cat. No.98TH8360).

[32]  Ralf Hinze,et al.  Unifying structured recursion schemes , 2013, ICFP.

[33]  Lee Spector,et al.  Genetic Programming and Autoconstructive Evolution with the Push Programming Language , 2002, Genetic Programming and Evolvable Machines.

[34]  Thomas Stützle,et al.  MAX-MIN Ant System , 2000, Future Gener. Comput. Syst..

[35]  Malcolm I. Heywood,et al.  Learning recursive programs with cooperative coevolution of genetic code mapping and genotype , 2007, GECCO '07.

[36]  Thomas Helmuth,et al.  General Program Synthesis from Examples Using Genetic Programming with Parent Selection Based on Random Lexicographic Orderings of Test Cases , 2015 .

[37]  Krzysztof Krawiec,et al.  Geometric semantic genetic programming for recursive boolean programs , 2017, GECCO.