CS 395T: Systems Verification and Synthesis Spring 2022

Schedule

Paper links require a login you can find on Canvas.

Each lecture, we'll discuss a research paper in systems verification or synthesis. A few lectures will instead be introductions to a verification or synthesis tool that will be useful in understanding the papers we're reading.

For each paper, a reading response is due on Canvas at 11pm the evening before lecture. This response should be one paragraph describing what you liked and didn't like about the paper, and a list of questions for the in-class discussion.

January 18Course logistics; introduction
January 20Compilers: Reflections on trusting trust, Ken Thompson, in Communications of the ACM, August 1984
January 25Coq introduction (James)
January 27Compiler verification (1): Formal verification of a realistic compiler, Xavier Leroy, in Communications of the ACM, July 2009
February 1Homework 1 (Coq) office hours & hack session
February 3No class (winter weather)
February 8SAT and SMT introduction (James)
February 10Compiler verification (2): Provably correct peephole optimizations with Alive, Nuno P. Lopes, et al, PLDI 2015
February 15Rosette introduction (James)
February 17Compiler verification (3): Specification and verification in the field: Applying formal methods to BPF just-in-time compilers in the Linux kernel, Luke Nelson, et al, OSDI 2020
February 22Program synthesis: Combinatorial sketching for finite programs, Armando Solar-Lezama, et al, ASPLOS 2006
February 24Homework 3 (Rosette) office hours & hack session
March 1Synthesis-aided compilation (1): Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures, Phitchaya Mangpo Phothilimthana, et al, PLDI 2014
March 3Synthesis-aided compilation (2): Denali: A Goal-directed Superoptimizer, Rajeev Joshi, et al, PLDI 2002
March 8Synthesis-aided compilation (3): Stochastic Superoptimization, Eric Schkufza, et al, ASPLOS 2013
March 10Synthesis for compilers: Stratified Synthesis: Automatically Learning the x86-64 Instruction Set, Stefan Heule, et al, PLDI 2016
March 15No class (spring break)
March 17No class (spring break)
March 22Trusting compiled code: Safe Kernel Extensions Without Run-Time Checking, George C. Necula and Peter Lee, OSDI 1996
March 24Kernel verification (1): seL4: Formal Verification of an OS Kernel, Gerwin Klein, et al, SOSP 2009
March 29Dafny introduction (James)
March 31Kernel verification (2): Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System, Jean Yang, et al, PLDI 2010
April 5Homework 4 (Dafny) office hours/hack session
April 7Kernel synthesis: The Synthesis Kernel, Calton Pu, et al, in Computing Systems, Winter 1988
April 12Full-stack verification: Ironclad Apps: End-to-End Security via Automated Full-System Verification, Chris Hawblitzel, et al, OSDI 2014
April 14Distributed systems (1): IronFleet: Proving Practical Distributed Systems Correct, Chris Hawblitzel, et al, SOSP 2015
April 19Distributed systems (2): Verdi: A Framework for Implementing and Formally Verifying Distributed Systems, James R. Wilcox, et al, PLDI 2015
April 21Concurrency: Finding and Reproducing Heisenbugs in Concurrent Programs, Madanlal Musuvathi, et al, OSDI 2008
April 26File systems (1): Using Crash Hoare Logic for Certifying the FSCQ File System, Haogang Chen, et al, SOSP 2015
April 28File systems (2): Storage Systems are Distributed Systems (So Verify Them That Way!), Travis Hance, et al, OSDI 2020
May 3Reflections (1): How Amazon Web Services Uses Formal Methods, Chris Newcombe, et al, in Communications of the ACM, April 2015
May 5Reflections (2): Social Processes and Proofs of Programs and Theorems, Richard A. De Millo, et al, in Communications of the ACM, May 1979