Multi-Objective Interactive Program Synthesis (original)

296
Опубликовано 11 августа 2019, 20:31
PROSE (PROgram Synthesis using Examples) is a program synthesis technology that can generate programs from a few input-output examples. It is a general-purpose technique that can be instantiated to specific domains by designing a domain-specific language (DSL) over which programs are synthesized.

In the past, program synthesis was mainly used as a black-box to perform data transformation tasks. Recently, there is interest in opening up the technique by introducing interactivity in the program synthesis process, and also exposing the synthesized program to the user. This leads us to two problems. The first pertains to finding the input on which to query the user so that the program synthesis engine can quickly converge to the user-intended program. The second problem is concerned with finding programs that are easier to translate into readable code.

For the first problem, we use an information-theoretic approach to find the input that provides the most additional information about the identity of the user-intended program. The second problem is an instance of multi-objective program synthesis. We present a three-phase modular approach for this problem that combines classical program synthesis with a second phase that performs a global search for the optimal program and a third phase that performs a local search to further improve the discovered program.

We have built these new approaches into PROSE, and we now have a Python SDK for PROSE. The Python SDK allows users to synthesize Python code that users can see, edit, execute, and incorporate in their larger project. To illustrate the power of these new developments, we demonstrate the use of the PROSE Python SDK on a data preparation task. PROSE Python SDK can be used to significantly expedite tasks pertaining to data ingestion, data inspection, data transformation, and datatype detection.

See more at microsoft.com/en-us/research/v...
автотехномузыкадетское