We describe the first approach to automatically synthesizing heap-manipulating programs with auxiliary recursive procedures. Such procedures occur routinely in data structure transformations (e.g., flattening a tree into a list) or traversals of composite structures (e.g., n-ary trees). Our approach, dubbed cyclic program synthesis, enhances deductive program synthesis with a novel application of cyclic proofs. Specifically, we observe that the machinery used to form cycles in cyclic proofs can be reused to systematically and efficiently abduce recursive auxiliary procedures.
We develop the theory of cyclic program synthesis by extending Synthetic Separation Logic (SSL), a logical framework for deductive synthesis of heap-manipulating programs from Separation Logic specifications. We implement our approach as a tool called Cypress, and showcase it by automatically synthesizing a number of programs manipulating linked data structures using recursive auxiliary procedures and mutual recursion, many of which were beyond the reach of existing program synthesis tools.
Fri 22 OctDisplayed time zone: Central Time (US & Canada) change
10:50 - 12:10
|Compiling Stan to Generative Probabilistic Languages and Extension to Deep Probabilistic Programming|
|On Probabilistic Termination of Functional Programs with Continuous Distributions|
|SPPL: Probabilistic Programming with Fast Exact Symbolic Inference|
Feras Saad Massachusetts Institute of Technology, Martin C. Rinard Massachusetts Institute of Technology, Vikash K. Mansinghka MITDOI
|Cyclic Program Synthesis|
Shachar Itzhaky Technion, Hila Peleg Technion, Nadia Polikarpova University of California at San Diego, Reuben N. S. Rowe University of Kent, Ilya Sergey National University of SingaporeDOI
|Discussion, Questions and Answers|