Cyclic program synthesis
Shachar Itzhaky, Hila Peleg, Nadia Polikarpova, Reuben N. S. Rowe, Ilya Sergey
Abstract
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.
Topics & Concepts
Mathematical proofComputer scienceProgram synthesisHeap (data structure)Programming languageData structureTree (set theory)Theoretical computer scienceProgram transformationAlgorithmGeneric programmingMathematicsCombinatoricsGeometryLogic, programming, and type systemsFormal Methods in VerificationSoftware Testing and Debugging Techniques