2023
DOI: 10.1145/3571226
|View full text |Cite
|
Sign up to set email alerts
|

FlashFill++: Scaling Programming by Example by Cutting to the Chase

Abstract: Programming-by-Examples (PBE) involves synthesizing an "intended program" from a small set of user-provided input-output examples. A key PBE strategy has been to restrict the search to a carefully designed small domain-specific language (DSL) with "effectively-invertible" (EI) operators at the top and "effectively-enumerable" (EE) operators at the bottom. This facilitates an effective combination of top-down synthesis strategy (which backpropagates outputs over various paths in the DSL using inverse functions)… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
4
0

Year Published

2023
2023
2024
2024

Publication Types

Select...
6
1
1

Relationship

0
8

Authors

Journals

citations
Cited by 12 publications
(4 citation statements)
references
References 41 publications
0
4
0
Order By: Relevance
“…This addresses a central question in expression learning with version space algebra (VSA) techniques, especially those realized as tree automata: for which symbolic languages are these learning algorithms possible? One prevailing answer in the literature is that language operators should have finite inverses (e.g., see [Cambronero et al 2023;Polozov and Gulwani 2015]). When operators have finite inverses a top-down tree automaton can be effectively constructed.…”
Section: Discussionmentioning
confidence: 99%
See 1 more Smart Citation
“…This addresses a central question in expression learning with version space algebra (VSA) techniques, especially those realized as tree automata: for which symbolic languages are these learning algorithms possible? One prevailing answer in the literature is that language operators should have finite inverses (e.g., see [Cambronero et al 2023;Polozov and Gulwani 2015]). When operators have finite inverses a top-down tree automaton can be effectively constructed.…”
Section: Discussionmentioning
confidence: 99%
“…Expression learning is connected to program synthesis, and in particular, programming by example [Polozov and Gulwani 2015], where practical algorithms have been used to automate tedious programming tasks, e.g. synthesizing string programs [Cambronero et al 2023;Gulwani 2011], bit-manipulating programs from templates [Solar-Lezama et al 2006], or functional programs from examples and type information [Osera and Zdancewic 2015;Polikarpova et al 2016]. Synthesis with grammar restrictions follows work in the SyGus [Alur et al 2015], and recently, SemGuS frameworks [Kim et al 2021].…”
Section: Related Workmentioning
confidence: 99%
“…For example, Escher [2] is an algorithm for synthesising recursive programs by interacting with the user via input-output examples. Programmingby-example (PBE) has seen a lot of development with practical applications in spreadsheets with Flashfill and subsequent work [18,36]. Synthesis has also been applied to programming languages such as Scala [31].…”
Section: Syntax-guided Synthesismentioning
confidence: 99%
“…This approach has also been applied to termination and runtime analysis of programs [15,17,16,37,10], invariant generation [18,47,25,42,30], static cost analysis of probabilistic programs [21,19,54,53,22,51], detection of deep bugs [8], and LTL model-checking [20]. A more recent but quite orthogonal paradigm is example-driven synthesis, where programs are synthesized from examples using techniques from formal methods and machine learning, e.g., [48,11,33].…”
Section: Introductionmentioning
confidence: 99%