Program Synthesis with Higher Order Specifications

24 July 2023, 12:00, CSIT Level 2 - Systems Area
Speaker: Alex Potanin (ANU)

Abstract#

Synthetic Separation Logic (SSL) is a formalism that powers SuSLik, the state-of-the-art approach for the deductive synthesis of provably-correct programs in C-like languages that manipulate with heap-based linked data structures. Despite its expressivity, SSL suffers from two shortcomings that hinder its utility.

First, its main specification component, inductive predicates, only admits first-order definitions of data structure shapes, which leads to the proliferation of ``boiler-plate'' predicates for specifying common patterns. Second, SSL requires concrete definitions of data structures to synthesise programs that manipulate them, which results in the need to change a specification for a synthesis task every time changes are introduced into the layout of the involved structures.

We propose to significantly lift the level of abstraction used in writing Separation Logic specifications for synthesis - both simplifying the approach and making the specifications more usable and easy to read and follow. We avoid the need to repetitively re-state low-level representation details throughout the specifications - allowing the reuse of different implementations of the same data structure by abstracting away the details of a specific layout used in memory. Our novel high-level front-end language called Pika takes SuSLik to the next level of expressivity and simplicity.

We implemented a layout-agnostic synthesiser from Pika to SuSLik enabling push-the-button synthesis of C programs with in-place memory updates, along with the accompanying full proofs that they meet Separation Logic-style specifications, from high-level specifications that resemble ordinary functional programs. Our experiments show that our tool can produce C code that is comparable in its performance characteristics and is sometimes faster than optimised Haskell.

Speaker Bio#

Alex is originally from Moscow, Russia with a background in Mathematics. He completed his PhD in programming languages in 2006 and took up a job as a Lecturer in Software Engineering at Victoria University of Wellington. During his studies, he took short breaks to work as a Visiting Researcher at Purdue University, and Software Engineer at two Wellington start-ups. He spent 2013 on sabbatical at Carnegie Mellon University in Pittsburgh, PA, USA. He spent winter 2019/2020 on sabbatical at Kyoto University in Japan.
bars search caret-down plus minus arrow-right times arrow-up