2015 · 185 citations · 20 references
ComputingComputer EngineeringComputer ScienceAlgorithmsCompilersProgramming LanguagesAbstract Syntax TreesCompiler ConstructionControl-flow AnalysisData-flow AnalysisType CheckingType SystemsAlgebraic Data TypesProgram RefinementProgram SynthesisRecursive FunctionsRecursive TypesSearch Space PruningType ConstraintsType Theory
This paper presents an algorithm for synthesizing recursive functions that process algebraic datatypes. It is founded on proof-theoretic techniques that exploit both type information and input–output examples to prune the search space. The algorithm uses refinement trees, a data structure that succinctly represents constraints on the shape of generated code. We evaluate the algorithm by using a prototype implementation to synthesize more than 40 benchmarks and several non-trivial larger examples. Our results demonstrate that the approach meets or outperforms the state-of-the-art for this domain, in terms of synthesis time or attainable size of the generated programs.
20
Rajeev Alur, Rastislav Bodík, Garvit Juniwal et al. · 2013 · 523 citations
Automating string processing in spreadsheets using input-output examples
Sumit Gulwani · 2011 · 446 citations