Dimensions in program synthesis

S Gulwani - Proceedings of the 12th international ACM SIGPLAN …, 2010 - dl.acm.org
Proceedings of the 12th international ACM SIGPLAN symposium on Principles …, 2010dl.acm.org
Program Synthesis, which is the task of discovering programs that realize user intent, can be
useful in several scenarios: enabling people with no programming background to develop
utility programs, helping regular programmers automatically discover tricky/mundane details,
program understanding, discovery of new algorithms, and even teaching. This paper
describes three key dimensions in program synthesis: expression of user intent, space of
programs over which to search, and the search technique. These concepts are illustrated by …
Program Synthesis, which is the task of discovering programs that realize user intent, can be useful in several scenarios: enabling people with no programming background to develop utility programs, helping regular programmers automatically discover tricky/mundane details, program understanding, discovery of new algorithms, and even teaching.
This paper describes three key dimensions in program synthesis: expression of user intent, space of programs over which to search, and the search technique. These concepts are illustrated by brief description of various program synthesis projects that target synthesis of a wide variety of programs such as standard undergraduate textbook algorithms e.g., sorting, dynamic programming), program inverses(e.g., decoders, deserializers), bitvector manipulation routines, deobfuscated programs, graph algorithms, text-manipulating routines, mutual exclusion algorithms, etc.
ACM Digital Library