SyPet is a novel type-directed tool for component-based synthesis. The key novelty of our approach is the use of a compact Petri-net representation to model relationships between methods in an API. Given a target method signature S, our approach performs reachability analysis on the underlying Petri-net model to identify sequences of method calls that could be used to synthesize an implementation of S. The programs synthesized by our algorithm are guaranteed to type check and pass all test cases provided by the user.


Component-Based Synthesis for Complex APIs. Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, Thomas W. Reps. To appear in POPL 2017.


To reproduce the result in our paper, you need to download the zip file which contains SyPet as well as 30 benchmarks that are used in our POPL paper. Please go through our README file before running the tool.