Origami: (un)folding the abstraction of recursion schemes for program synthesis (2402.13828v2)
Abstract: Program synthesis with Genetic Programming searches for a correct program that satisfies the input specification, which is usually provided as input-output examples. One particular challenge is how to effectively handle loops and recursion avoiding programs that never terminate. A helpful abstraction that can alleviate this problem is the employment of Recursion Schemes that generalize the combination of data production and consumption. Recursion Schemes are very powerful as they allow the construction of programs that can summarize data, create sequences, and perform advanced calculations. The main advantage of writing a program using Recursion Schemes is that the programs are composed of well defined templates with only a few parts that need to be synthesized. In this paper we make an initial study of the benefits of using program synthesis with fold and unfold templates, and outline some preliminary experimental results. To highlight the advantages and disadvantages of this approach, we manually solved the entire GPSB benchmark using recursion schemes, highlighting the parts that should be evolved compared to alternative implementations. We noticed that, once the choice of which recursion scheme is made, the synthesis process can be simplified as each of the missing parts of the template are reduced to simpler functions, which are further constrained by their own input and output types.
- Program synthesis using uniform mutation by addition and deletion. In Proceedings of the Genetic and Evolutionary Computation Conference, pages 1127–1134, 2018.
- Code building genetic programming. In Proceedings of the 2020 Genetic and Evolutionary Computation Conference, pages 994–1002, 2020.
- Grammatical evolution. IEEE Transactions on Evolutionary Computation, 5(4):349–358, 2001.
- Grammar-guided genetic programming. Encyclopedia of Artificial Intelligence, pages 767–773, 2009.
- HOTGP - Higher-Order Typed Genetic Programming. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO ’23, page 1091–1099, New York, NY, USA, 2023. Association for Computing Machinery.
- Functional programming with bananas, lenses, envelopes and barbed wire. In Functional Programming Languages and Computer Architecture: 5th ACM Conference Cambridge, MA, USA, August 26–30, 1991 Proceedings 5, pages 124–144. Springer, 1991.
- Jeremy Gibbons. The fun of programming. 2003.
- General program synthesis benchmark suite. In Proceedings of the 2015 Annual Conference on Genetic and Evolutionary Computation, pages 1039–1046, 2015.
- Neil D Jones. The expressive power of higher-order types or, life without cons. Journal of Functional Programming, 11(1):55–94, 2001.
- Brian Harvey. Avoiding recursion. Hoyles, C., Noss, R. Learning Mathematics and LOGO. The MIT Press Cambridge, Massachusetts, USA, 393426, 1992.
- Program schemes, recursion schemes, and formal languages. Journal of Computer and System Sciences, 7(2):119–160, 1973.
- General program synthesis benchmark suite. In GECCO ’15: Proceedings of the 2015 Annual Conference on Genetic and Evolutionary Computation, pages 1039–1046, Madrid, Spain, 2015. ACM.
- A grammar design pattern for arbitrary program synthesis problems in genetic programming. In James McDermott, Mauro Castelli, Lukas Sekanina, Evert Haasdijk, and Pablo García-Sánchez, editors, Genetic Programming, pages 262–277, Cham, 2017. Springer International Publishing.
- Extending program synthesis grammars for grammar-guided genetic programming. In Anne Auger, Carlos M. Fonseca, Nuno Lourenço, Penousal Machado, Luís Paquete, and Darrell Whitley, editors, Parallel Problem Solving from Nature – PPSN XV, pages 197–208, Cham, 2018. Springer International Publishing.
- Functional code building genetic programming. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO ’22, page 1000–1008, New York, NY, USA, 2022. Association for Computing Machinery.
- Why functional program synthesis matters (in the realm of genetic programming). In Proceedings of the Genetic and Evolutionary Computation Conference Companion, GECCO ’22, page 1844–1853, New York, NY, USA, 2022. Association for Computing Machinery.
- Problem-Solving Benefits of Down-Sampled Lexicase Selection. Artificial Life, 27(3–4):183–203, 03 2022.
- Program synthesis using uniform mutation by addition and deletion. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO ’18, page 1127–1134, New York, NY, USA, 2018. Association for Computing Machinery.
- Gptips: an open source genetic programming toolbox for multigene symbolic regression. In Proceedings of the International multiconference of engineers and computer scientists, volume 1, pages 77–80. Citeseer, 2010.
- Improving performance and cooperation in multi-agent systems. Genetic Programming Theory and Practice V, pages 221–237, 2008.
- Methods for competitive and cooperative co-evolution. In Adaptation, Coevolution and Learning in Multiagent Systems: Papers from the 1996 AAAI Spring Symposium, pages 45–50, 1996.