Library for automatically synthesizing programs from examples. Microsoft PROgram Synthesis using Examples SDK (PROSE) is a framework of technologies for automatic generation of programs from input-output examples, keywords, and similar forms of imprecise specification. In PROSE, you define a domain-specific language (DSL) of programs that constitute your domain of useful tasks (e.g. a DSL of CSS selectors). At runtime, you give PROSE some (typically user-provided) input-output examples for the desired program's behavior, and its algorithms synthesize a ranked set of programs from this DSL that are consistent with the given examples. These programs can be saved and applied on similar user data after one learning session (typically with 1-4 examples). PROSE can be used to enable programming-by-example experience in an arbitrary user-facing application, provided the app developer describes its application domain in a DSL form. As part of the project, the PROSE framework includes a set of specific technologies for various data wrangling domains. These include Transformation.Text, a library of string transformations first shipped as FlashFill in Microsoft Excel 2013, text extraction library with a DSL of programs that find a desired sequence of regions in a textual file, and several others. All of these data wrangling libraries, as well as the underlying program synthesis framework, can currently be used out of the box for research, education, and other non-commercial initiatives.
$ dotnet add package Microsoft.ProgramSynthesisThe Program Synthesis using Examples (PROSE) SDK includes a set of technologies for the automatic generation of programs
from input-output examples. The SDK is split into a series of nuget packages that can be used independently or in
concert. Each package references which ever others it depends on as needed, so just install the packages you need for
your scenarios, or install the top-level Microsoft.ProgramSynthesis package to get everything.
You can find samples for consuming the SDK as well as the release notes at https://github.com/microsoft/prose.
The PROSE SDK is available for non-commercial use only. See the LICENSE.txt file for more details.
The PROSE SDK is closed source (except the usage samples), but if you run into problems, please open an issue, and someone from the PROSE team will work with you to see if the problem can be addressed.