Program synthesis from polymorphic refinement types

@article{Polikarpova2015ProgramSF,
  title={Program synthesis from polymorphic refinement types},
  author={Nadia Polikarpova and Armando Solar-Lezama},
  journal={Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation},
  year={2015}
}
We present a method for synthesizing recursive functions that provably satisfy a given specification in the form of a polymorphic refinement type. We observe that such specifications are particularly suitable for program synthesis for two reasons. First, they offer a unique combination of expressive power and decidability, which enables automatic verification—and hence synthesis—of nontrivial programs. Second, a type-based specification for a program can often be effectively decomposed into… Expand
Program synthesis by type-guided abstraction refinement
TLDR
This work introduces type-guided abstraction refinement (TYGAR), a new approach for scalable type-directed synthesis over polymorphic datatypes and components, and implemented TYGAR in H+, a tool that takes as input a set of Haskell libraries and a query type, and returns a Haskell term that uses functions from the provided libraries to implement the query type. Expand
Synthesis of Recursive ADT Transformations from Reusable Templates
TLDR
The approach relies on polymorphic synthesis constructs: a small but powerful extension to the language of syntactic templates, which makes it possible to define a program space in a concise and highly reusable manner, while at the same time retains the scalability benefits of conventional templates. Expand
Programming by predicates: a formal model for interactive synthesis
TLDR
This work presents a formal model for interactive synthesis, parameterized by an abstract domain of predicates on programs, which motivates the need for a general feedback model via predicates by showing that examples are an insufficient tool to differentiate between programs, even when used as a full specification. Expand
Resource-guided program synthesis
TLDR
The experiments show that ReSyn synthesizes programs that are asymptotically more efficient than those generated by a resource-agnostic synthesizer, and is faster than a naive combination of synthesis and resource analysis. Expand
Scaling Functional Synthesis and Repair
TLDR
A novel fault localization technique detects erroneous snippets with concrete execution and eliminates false positives by analyzing dependencies between execution traces, and a modified version of the synthesis algorithm generates fixes for it by introducing modifications to the original erroneous code. Expand
Program synthesis using abstraction refinement
TLDR
A refinement-based synthesis algorithm that uses abstract finite tree automata (AFTA), which uses a coarse initial program abstraction to construct an initial AFTA, which is iteratively refined by constructing a proof of incorrectness of any spurious program. Expand
Scalable Synthesis with Symbolic Syntax Graphs
General-purpose program synthesizers face a tradeoff between having a rich vocabulary for output programs and the time taken to discover a solution. One performance bottleneck is the construction ofExpand
Program Synthesis with Constraint Solving for the OutSystems Language
Program synthesis is the problem of automatically generating concrete program implementations from high-level specifications that define user intent. OutSystems is a low-code platform for rapidExpand
A promising , useful tool for future programming development environments
Writing programs that are both correct and efficient is challenging. A potential solution lies in program synthesis aimed at automatic derivation of an executable implementation (the “how”) from aExpand
A family of multi-concept program synthesisers in Alloy⁎
TLDR
This paper presents a characterisation of program synthesis as model finding, using Alloy⁎, a general framework for rapid development of a program synthesiser accommodating denotational semantics based synthesis, simultaneous deductive and inductive synthesis, software reuse, syntactic ingredients, and a new one: a soft sketch. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 60 REFERENCES
Complete functional synthesis
TLDR
This work proposes to generalize decision procedures into predictable and complete synthesis procedures, which are guaranteed to find code that satisfies the specification if such code exists and under which synthesis will statically decide whether the solution is guaranteed to exist, and whether it is unique. Expand
Syntax-guided synthesis
TLDR
This work describes three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, reports on prototype implementations, and presents experimental results on an initial set of benchmarks. Expand
Maximal specification synthesis
TLDR
A novel approach is presented that utilizes a counterexample-guided inductive synthesis loop and reduces the maximal specification inference problem to multi-abduction, and the novel notion of multi- abduction as a generalization of classical logical abduction is formulated. Expand
Type Assisted Synthesis of Recursive Transformers on Algebraic Data Types
TLDR
It is shown how synthesis can help implement interesting functions involving pattern matching and algebraic data types by synthesizing desugaring functions for lambda calculus that force the synthesizer to discover Church encodings for pairs and boolean operations. Expand
Recursive Program Synthesis
TLDR
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
Synthesis Through Unification
TLDR
This work presents the synthesis through unification (STUN) approach, which is an extension of the counter-example guided inductive synthesis approach, and picks a program from the program space that is correct for the new set S. Expand
Combinatorial sketching for finite programs
TLDR
SKETCH is a language for finite programs with linguistic support for sketching and its combinatorial synthesizer is complete for the class of finite programs, guaranteed to complete any sketch in theory, and in practice has scaled to realistic programming problems. Expand
Satisfiability Modulo Recursive Programs
TLDR
The system, Leon, verified detailed correctness properties for functional data structure implementations, as well as syntax tree manipulations, and was found to be fast for both finding counterexamples and finding correctness proofs, and to scale to larger programs than alternative techniques. Expand
Example-directed synthesis: a type-theoretic interpretation
TLDR
It is demonstrated that examples can, in general, be interpreted as refinement types, and formalizing synthesis as proof search in a sequent calculus with intersection and union refinements that prove to be sound with respect to a conventional type system is put into practice. Expand
Type-and-example-directed program synthesis
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–outputExpand
...
1
2
3
4
5
...