Collaborators

Overview

The goal of the RESYN project is to automate the development of efficient programs by advancing the state of the art in program synthesis. Program synthesis is an emerging technology for automatically generating programs from high-level descriptions of the task they must perform. For any given task, however, there are generally many programs that perform the same function, but differ in their use of computing resources, such as time, memory, or energy. Most state-of-the-art synthesis tools do not model nor analyze resource usage. By taking resource consumption of candidate programs into account during synthesis, RESYN is able to synthesize provably efficient programs, as well as customized programs for platforms with specific resource requirements. The project involves graduate and undergraduate students in this research.

To leverage resource usage information during synthesis, the investigators combine two recent techniques: type-driven program synthesis and automated amortized resource analysis. First, they develop a novel resource-aware refinement type system, which unifies the expressive type systems at the core of the two techniques. Next, based on this type system, the investigators build a new type-driven synthesis engine, capable of pruning and prioritizing the search for programs based on their resource consumption. Finally, they evaluate the synthesis engine in three relevant application domains: server-less computing, smart contracts, and prevention of side-channel attacks. The course materials and research products developed in this project will be made freely available.

Support

Grant by NSF CCF

Publications

    1. Liquid Resource Types Tristan Knoth, Di Wang, Adam Reynolds, Nadia Polikarpova, and Jan Hoffmann In 25th International Conference on Functional Programming (ICFP’20). 2020 [pdf]
    1. Resource-Guided Program Synthesis Tristan Knoth, Di Wang, Jan Hoffmann, and Nadia Polikarpova In 40th Conference on Programming Language Design and Implementation (PLDI’19). 2019 [pdf] [tr]
    1. Type-Guided Worst-Case Input Generation Di Wang, and Jan Hoffmann In 46th Symposium on Principles of Programming Languages (POPL’19). 2019 [pdf] [slides] [tr]
    1. Exponential Automatic Amortized Resource Analysis David Kahn, and Jan Hoffmann In 23rd International Conference on Foundations of Software Science and Computation Structures (FoSSaCS’20). 2020 [pdf]