# Polynomial-Time Proactive Synthesis of Tree-to-String Functions from Examples

@article{Mayer2017PolynomialTimePS, title={Polynomial-Time Proactive Synthesis of Tree-to-String Functions from Examples}, author={Mika{\"e}l Mayer and Jad Hamza and Viktor Kuncak}, journal={ArXiv}, year={2017}, volume={abs/1701.04288} }

Synthesis from examples enables non-expert users to generate programs by specifying examples of their behavior. A domain-specific form of such synthesis has been recently deployed in a widely used spreadsheet software product. In this paper we contribute to foundations of such techniques and present a complete algorithm for synthesis of a class of recursive functions defined by structural recursion over a given algebraic data type definition. The functions we consider map an algebraic data type… Expand

#### 3 Citations

Proactive Synthesis of Recursive Tree-to-String Functions from Examples

- Computer Science
- ECOOP
- 2017

A complete algorithm for synthesis of a class of recursive functions defined by structural recursion over a given algebraic data type definition is presented and it is proved that it is possible to build test sets of cubic size for context-free languages. Expand

Proactive Synthesis of Recursive Tree-to-String Functions from Examples (Artifact)

- Computer Science
- Dagstuhl Artifacts Ser.
- 2017

This artifact, named Prosy, is an interactive command-line tool for synthesizing recursive tree-to-string functions (e.g. pretty-printers) from examples. Specifically, Prosy takes as input a Scala… Expand

Technical Report Column

- Computer Science
- SIGA
- 2017

Low Bounds for Elimination via Weak Regularity, Optimal Resilience for Short-Circuit Noise in Formulas, and Collision-based Testers are Optimal for Uniformity and Closeness. Expand

#### References

SHOWING 1-10 OF 43 REFERENCES

Proactive Synthesis of Recursive Tree-to-String Functions from Examples

- Computer Science
- ECOOP
- 2017

A complete algorithm for synthesis of a class of recursive functions defined by structural recursion over a given algebraic data type definition is presented and it is proved that it is possible to build test sets of cubic size for context-free languages. Expand

Synthesizing data structure transformations from input-output examples

- Computer Science
- PLDI 2015
- 2015

We present a method for example-guided synthesis of functional programs over recursive data structures. Given a set of input-output examples, our method synthesizes a program in a functional language… Expand

Test-driven synthesis

- Computer Science
- PLDI 2014
- 2014

A program synthesizer which can be parameterized by an arbitrary DSL that may contain conditionals and loops and therefore is able to synthesize programs in any domain and is compared to state-of-the-art DSL-specific synthesizers as well to the general purpose synthesizer Sketch. Expand

Recursive Program Synthesis

- Computer Science
- CAV
- 2013

This paper presents Escher, a generic and efficient algorithm that interacts with the user via input-output examples, and synthesizes recursive programs implementing intended behaviour, and outperforms a state-of-the-art SAT-based synthesis tool from the literature. Expand

Program synthesis from polymorphic refinement types

- Computer Science
- PLDI
- 2016

The tool was able to synthesize more complex programs than those reported in prior work, as well as most of the benchmarks tackled by existing synthesizers, often starting from a more concise and intuitive user input. Expand

Synthesis from Examples

- Computer Science
- 2016

This paper illustrates various algorithmic techniques and user interaction models by describing inductive synthesizers for varied applications including synthesis of tricky bitvector algorithms, spreadsheet macros for automating repetitive data manipulation tasks, ruler/compass based geometry constructions, new algebra problems, sequences for mathematical intellisense, and grading of programming problems. Expand

Streaming Tree Transducers

- Computer Science, Mathematics
- ICALP
- 2012

This work introduces streaming tree transducers as an analyzable, executable, and expressive model for transforming unranked ordered trees (and hedges) in a single pass and proves that the expressiveness of the model coincides with transductions definable using monadic second-order logic (MSO). Expand

Synthesizing Number Transformations from Input-Output Examples

- Computer Science
- CAV
- 2012

A framework that can learn number transformations from very few input-output examples is presented, and an inductive synthesis algorithm for manipulating data types that have numbers as a constituent sub-type such as date, unit, and time is obtained. Expand

Expressiveness of streaming string transducers

- Mathematics, Computer Science
- FSTTCS
- 2010

This work focuses on streaming transducers processing strings over finite alphabets, given the existence of a robust and well-studied class of ``regular'' transductions for this case, and finds that the expressiveness of streaming string transducers coincides exactly with this class of regular transduction. Expand

FlashMeta: a framework for inductive program synthesis

- Computer Science
- OOPSLA 2015
- 2015

The FlashMeta framework implements a novel program synthesis methodology, allowing synthesizer developers to generate an efficient synthesizer from the mere DSL definition (if properties of the DSL operators have been modeled), and found that 10+ existing industrial-quality mass-market applications based on PBE can be cast as instances of D4. Expand