Microsoft Program Synthesis using Examples SDK

A framework for automatic programming or data wrangling from input-output examples.


Program Synthesis Framework

Microsoft PROSE SDK is a framework of technologies for programming by examples – automatic generation of programs from input-output examples at runtime.

Given a domain-specific language (DSL) and some input-output examples for the desired program’s behavior, PROSE synthesizes a ranked set of DSL programs that are consistent with the examples.

Programming by Examples workflow using PROSE SDK

Data Wrangling DSLs

PROSE SDK includes a pre-defined suite of technologies for various kinds of data wrangling – cleaning and pre-processing raw semi-structure data into a form amenable to analysis:

  • Flash Fill, a technology for text transformation by examples, available in Microsoft Excel and PowerShell.
  • Data extraction from text files by examples, available in PowerShell and Azure Log Analytics.
  • Data extraction and transformation of JSON by examples.
  • Predictive file splitting technology, which splits a text file into the structured columns without any examples.

Installation

2. Ensure that either .NET Framework or Mono is available on your machine.*
*  .NET Core support is forthcoming as soon as its MSBuild tooling support stabilizes.

3a. Generate a new DSL skeleton via Yeoman.

(requires Node.js)
            
npm install -g yo
npm install -g generator-prose

yo prose
            
        

or

3b. Build on top of the DSLs in our NuGet package.

            
Install-Package Microsoft.ProgramSynthesis
Install-Package Microsoft.ProgramSynthesis.Compiler
            
        
            
using Microsoft.ProgramSynthesis.Extraction.Text;
            
        

Getting Started

Tutorial

A step-by-step walkthrough of the process of building a DSL in PROSE and enabling program synthesis for it.

Playground

PROSE Playground is an experimental tool for extracting data from semi-structured text files and Web pages.

API & Samples

If you want to apply an existing PROSE DSL, check out its documentation on the left and our samples.

Resources

This section contains our slides and publications. Also, if you have any questions, feel free to email us or open an issue on GitHub.