Tutorials

Emina Torlak, University of Washington

Abstract: Solver-aided tools have automated the verification and synthesis of practical programs in many domains, from high-performance computing to executable biology. These tools work by reducing verification and synthesis tasks to satisfiability queries, which involves compiling (bounded) programs to logical constraints. Developing an effective symbolic compiler is challenging, however, and until recently, it took years of expert work to create a solver-aided tool for a new domain.
This tutorial will present Rosette, a programming language for rapid creation of solver-aided tools. With Rosette, building such tools for a new domain is a matter of implementing a language for programming in that domain. Once you implement your domain-specific language (DSL), by writing a library or an interpreter in Rosette, you get a symbolic compiler and the tools for free. This is made possible by Rosette’s symbolic virtual machine, which can translate both a DSL implementation and programs in that DSL to efficient constraints. Since its first public release in 2014, Rosette has enabled a wide range of programmers, from professional developers to high school students, to quickly create practical solver-aided tools for a variety of domains. Example applications include verifying radiation therapy software, generating efficent code for ultra low-power hardware, and synthesizing custom tutoring rules for K-12 algebra. This tutorial will provide a brief introduction to Rosette, describe a few recent applications, and equip you with tools to build your own tools!

Bio: Emina Torlak is an Associate Professor at the University of Washington, working on new languages and tools for computer-aided design, verification, and synthesis of software. She received her Bachelors (2003), Masters (2004), and Ph.D. (2009) degrees from MIT, and subsequently worked at IBM Research, LogicBlox, and as a research scientist at U.C. Berkeley. Emina is the creator of the Kodkod solver, which has been used in over 70 academic and industrial tools for software engineering. Her current work integrates solvers into the Rosette programming language, enabling programmers to create their own solver-aided tools for all kinds of systems, from radiotherapy machines to automated algebra tutors. Emina is a recipient of the NSF CAREER Award (2017), Sloan Research Fellowship (2016), and the AITO Dahl-Nygaard Junior Prize (2016).

Ranjit Jhala, UC San Diego