skip to main content
10.1145/3583131.3590502acmconferencesArticle/Chapter ViewAbstractPublication PagesgeccoConference Proceedingsconference-collections
research-article

Solving Novel Program Synthesis Problems with Genetic Programming using Parametric Polymorphism

Published:12 July 2023Publication History

ABSTRACT

Contemporary genetic programming (GP) systems for general program synthesis have been primarily concerned with evolving programs that can manipulate values from a standard set of primitive data types and simple indexed data structures. In contrast, human programmers do not limit themselves to a small finite set of data types and use polymorphism to express an unbounded number of types including nested data structures, product types, and generic functions. Code-building Genetic Programming (CBGP) is a recently introduced method that compiles type-safe programs from linear genomes using stack-based compilation and a formal type system. Although prior work with CBGP has shown initial demonstrations of polymorphism inside evolved programs, we have provided a deeper exploration of these capabilities through the evolution of programs which make use of generic data types such as key-value maps, tuples, and sets, as well as higher order functions and functions with polymorphic type signatures. In our experiments, CBGP is able to solve problems with all of these properties, where every other GP system that we know of has restrictions that make it unable to even consider problems with these properties. This demonstration provides a significant step towards fully aligning the expressiveness of GP to real world programming.

References

  1. Rajeev Alur, Rastislav Bodik, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, and Abhishek Udupa. 2013. Syntax-guided synthesis. In 2013 Formal Methods in Computer-Aided Design. 1--8. Google ScholarGoogle ScholarCross RefCross Ref
  2. Rajeev Alur, Rishabh Singh, Dana Fisman, and Armando Solar-Lezama. 2018. Search-Based Program Synthesis. Commun. ACM 61, 12 (nov 2018), 84--93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Jacob Austin, Augustus Odena, Maxwell Nye, Maarten Bosma, Henryk Michalewski, David Dohan, Ellen Jiang, Carrie Cai, Michael Terry, Quoc Le, and Charles Sutton. 2021. Program Synthesis with Large Language Models. arXiv (Aug. 2021). http://arxiv.org/abs/2108.07732 arXiv: 2108.07732.Google ScholarGoogle Scholar
  4. Matej Balog, Alexander L. Gaunt, Marc Brockschmidt, Sebastian Nowozin, and Daniel Tarlow. 2016. DeepCoder: Learning to Write Programs. CoRR abs/1611.01989 (2016). arXiv:1611.01989 http://arxiv.org/abs/1611.01989Google ScholarGoogle Scholar
  5. Iwo Bladek and Krzysztof Krawiec. 2017. Evolutionary Program Sketching. In EuroGP 2017: Proceedings of the 20th European Conference on Genetic Programming (LNCS, Vol. 10196), Mauro Castelli, James McDermott, and Lukas Sekanina (Eds.). Springer Verlag, Amsterdam, 3--18. Google ScholarGoogle ScholarCross RefCross Ref
  6. Luca Cardelli and Peter Wegner. 1985. On Understanding Types, Data Abstraction, and Polymorphism. ACM Comput. Surv. 17, 4 (dec 1985), 471--523. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde, Jared Kaplan, Harri Edwards, Yura Burda, Nicholas Joseph, Greg Brockman, Alex Ray, Raul Puri, Gretchen Krueger, Michael Petrov, Heidy Khlaaf, Girish Sastry, Pamela Mishkin, Brooke Chan, Scott Gray, Nick Ryder, Mikhail Pavlov, Alethea Power, Lukasz Kaiser, Mohammad Bavarian, Clemens Winter, Philippe Tillet, Felipe Such, Dave Cummings, Matthias Plappert, Fotios Chantzis, Elizabeth Barnes, Ariel Herbert-Voss, Will Guss, Alex Nichol, Igor Babuschkin, Suchir Balaji, Shantanu Jain, Andrew Carr, Jan Leike, Josh Achiam, Vedant Misra, Evan Morikawa, Alec Radford, Matthew Knight, Miles Brundage, Mira Murati, Katie Mayer, Peter Welinder, Bob McGrew, Dario Amodei, Sam McCandlish, Ilya Sutskever, and Wojciech Zaremba. 2021. Evaluating Large Language Models Trained on Code. arXiv (2021). http://arxiv.org/abs/2107.03374Google ScholarGoogle Scholar
  8. Stefan Forstenlechner, David Fagan, Miguel Nicolau, and Michael O'Neill. 2017. A Grammar Design Pattern for Arbitrary Program Synthesis Problems in Genetic Programming. In EuroGP 2017: Proceedings of the 20th European Conference on Genetic Programming (LNCS, Vol. 10196). Springer Verlag, Amsterdam, 262--277. Google ScholarGoogle ScholarCross RefCross Ref
  9. Stefan Forstenlechner, David Fagan, Miguel Nicolau, and Michael O'Neill. 2018. Extending Program Synthesis Grammars for Grammar-Guided Genetic Programming. In Parallel Problem Solving from Nature - PPSN XV. Springer International Publishing, Cham, 197--208.Google ScholarGoogle Scholar
  10. Fraser Garrow, Michael A. Lones, and Robert Stewart. 2022. Why Functional Program Synthesis Matters (in the Realm of Genetic Programming). In Proceedings of the Genetic and Evolutionary Computation Conference Companion (Boston, Massachusetts) (GECCO '22). Association for Computing Machinery, New York, NY, USA, 1844--1853. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Mike Gordon. 2000. From LCF to HOL: A Short History. MIT Press, Cambridge, MA, USA, 169--185.Google ScholarGoogle Scholar
  12. Sumit Gulwani. 2011. Automating String Processing in Spreadsheets using Input-Output Examples. In PoPL'11, January 26--28, 2011, Austin, Texas, USA (popl'11, january 26--28, 2011, austin, texas, usa ed.). https://www.microsoft.com/en-us/research/publication/automating-string-processing-spreadsheets-using-input-output-examples/Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Thomas Helmuth and Peter Kelly. 2021. PSB2: The Second Program Synthesis Benchmark Suite. In 2021 Genetic and Evolutionary Computation Conference (GECCO '21). ACM, Lille, France. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Thomas Helmuth and Peter Kelly. 2022. Applying Genetic Programming to PSB2: The Next Generation Program Synthesis Benchmark Suite. Genetic Programming and Evolvable Machines (June 2022), 375--404. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Thomas Helmuth, Nicholas Freitag McPhee, and Lee Spector. 2018. Program Synthesis Using Uniform Mutation by Addition and Deletion. In Proceedings of the Genetic and Evolutionary Computation Conference (Kyoto, Japan) (GECCO '18). ACM, New York, NY, USA, 1127--1134. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Thomas Helmuth, Edward Pantridge, Grace Woolson, and Lee Spector. 2020. Genetic Source Sensitivity and Transfer Learning in Genetic Programming. In Artificial Life Conference Proceedings. MIT Press, 303--311. Google ScholarGoogle ScholarCross RefCross Ref
  17. Thomas Helmuth and Lee Spector. 2015. General Program Synthesis Benchmark Suite. In Proceedings of the 2015 Annual Conference on Genetic and Evolutionary Computation (Madrid, Spain) (GECCO '15). Association for Computing Machinery, New York, NY, USA, 1039--1046. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Thomas Helmuth, Lee Spector, and James Matheson. 2015. Solving Uncompromising Problems with Lexicase Selection. IEEE Transactions on Evolutionary Computation 19, 5 (Oct. 2015), 630--643. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Roger Hindley. 1969. The principal type-scheme of an object in combinatory logic. Transactions of the american mathematical society 146 (1969), 29--60.Google ScholarGoogle Scholar
  20. B. J. Mailloux, J. E. Peck, and C. H. Koster. 1969. Report on the Algorithmic Language ALGOL 68. Numer. Math. 14, 2 (dec 1969), 79--218. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Robin Milner. 1978. A theory of type polymorphism in programming. J. Comput. System Sci. 17, 3 (1978), 348--375. Google ScholarGoogle ScholarCross RefCross Ref
  22. Michael O'Neill and Lee Spector. 2019. Automatic programming: The open issue? Genetic Programming and Evolvable Machines (2019). Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Edward Pantridge, Thomas Helmuth, and Lee Spector. 2022. Functional Code Building Genetic Programming. In Proceedings of the Genetic and Evolutionary Computation Conference (Boston, Massachusetts) (GECCO '22). Association for Computing Machinery, New York, NY, USA, 1000--1008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Edward Pantridge and Lee Spector. 2020. Code Building Genetic Programming. In Proceedings of the 2020 Genetic and Evolutionary Computation Conference (Cancún, Mexico) (GECCO '20). Association for Computing Machinery, New York, NY, USA, 994--1002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Riccardo Poli, William B. Langdon, and Nicholas Freitag McPhee. 2008. A field guide to genetic programming. Published via http://lulu.com and freely available at http://www.gp-field-guide.org.uk. (With contributions by J. R. Koza).Google ScholarGoogle Scholar
  26. Conor Ryan, JJ Collins, and Michael O. Neill. 1998. Grammatical evolution: Evolving programs for an arbitrary language. In Genetic Programming. Springer Berlin Heidelberg, Berlin, Heidelberg, 83--96.Google ScholarGoogle Scholar
  27. Dominik Sobania, Martin Briesch, and Franz Rothlauf. 2022. Choose Your Programming Copilot: A Comparison of the Program Synthesis Performance of Github Copilot and Genetic Programming. In Proceedings of the Genetic and Evolutionary Computation Conference (Boston, Massachusetts) (GECCO '22). Association for Computing Machinery, New York, NY, USA, 1019--1027. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Armando Solar-Lezama. 2013. Program sketching. International Journal on Software Tools for Technology Transfer 15, 5 (2013), 475--495.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Lee Spector, Jon Klein, and Maarten Keijzer. 2005. The Push3 execution stack and the evolution of control. 1689--1696. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Tina Yu and Chris Clack. 1997. PolyGP: A polymorphic genetic programming system in Haskell. Stanford University Bookstore.Google ScholarGoogle Scholar

Index Terms

  1. Solving Novel Program Synthesis Problems with Genetic Programming using Parametric Polymorphism

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      GECCO '23: Proceedings of the Genetic and Evolutionary Computation Conference
      July 2023
      1667 pages
      ISBN:9798400701191
      DOI:10.1145/3583131

      Copyright © 2023 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 12 July 2023

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate1,669of4,410submissions,38%

      Upcoming Conference

      GECCO '24
      Genetic and Evolutionary Computation Conference
      July 14 - 18, 2024
      Melbourne , VIC , Australia

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader