Microsoft.ProgramSynthesis

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.


Keywords
Program, SDK, Synthesis, csharp, data-transformation, data-wrangling, dotnet, examples, microsoft, program-synthesis, prose
License
Other
Install
Install-Package Microsoft.ProgramSynthesis -Version 8.33.0

Documentation

Microsoft Program Synthesis using Examples SDK

The Program Synthesis using Examples (PROSE) SDK includes a set of technologies for the automatic generation of programs from input-output examples. This repo includes samples, release notes, and some other miscellaneous projects related to the Microsoft PROSE SDK.

The samples are split into two categories:

You can find guides for some of these sample projects and other information about the PROSE project here: https://microsoft.github.io/prose/

Optionally, you can get started quickly using Docker:

git clone https://github.com/microsoft/prose.git
cd prose
docker build -t prose-samples .
docker run -it --rm -v "$(pwd):/opt/prose-samples" -w "/opt/prose-samples" prose-samples bash
# Inside the Docker container
cd dsl-samples/ProseSample/ProseSample  # ... or the directory for any other sample project
dotnet run  # run the sample in the current directory

Contributing

The source of truth for all the information in this repository is actually an internal Microsoft repository, and any changes made here are at risk of being overwritten by future public releases from the PROSE team. If you detect issues with any of the samples or other things in this repo, please open an issue, and someone from the PROSE team will work with you to see that the problem is addressed.


This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.