'Program Synthesis: A Dream Realized?' by Roopsha Samanta

preview_player
Показать описание
The dream of program synthesis seeks to automatically create programs that conform to a user’s intent. Classically, program synthesis has been framed as a problem of generation of correct-by-construction programs from complete, formal specifications of their expected behavior. An increasingly favored and more tractable paradigm of program synthesis, however, is inductive program synthesis. Broadly construed, inductive program synthesis can be framed as a problem of generalizing partial specifications of program behavior, such as a set of input-output examples, into programs that are potentially correct over the entire input domain.

Unfortunately, similar to other inductive reasoning engines such as AI-based systems, inductive synthesis engines encounter challenges like overfitting, ambiguity, and brittleness. Thus, while the synthesized program may indeed conform to its partial specification, it may not exhibit the intended behavior on unseen inputs. PL researchers have been trying to tackle these problems through syntactic inductive biases applied to the space of candidate programs. However, the dream of program synthesis is yet to be realized.

In this talk, I will present a gentle introduction to classical and inductive program synthesis, illustrate common problems faced by inductive reasoning engines and common inductive biases used to offset the problems, and describe my group’s semantics-guided approach to improve the generalizability and robustness of inductive synthesis engines.

Roopsha Samanta

@roopshasamanta

Recorded at Strange Loop 2021
Комментарии
Автор

How does this compare to miniKanren in terms of performance and correctness?

MineBlocker
Автор

Great talk, thank you! A question to the presenter - while described approach seems to be quite useful in the long run, considering the "gain" slides - in the short run - how is that different from a neural network being trained on the examples to deliver results? Why do we need the code? Is it just for the sake of making sure that the logic is correct? As far as I understand, your current approach is kind of similar to a neural network?

TaranovskiAlex
Автор

This was a fantastic presentation, but I felt like I was missing some background information. I imagine other working programmers who haven’t followed research on this topic will also need to study some pre-reqs. Any good pointers?

noclaf