CS703 - Fall 2017
Program verification and synthesis
General InformationLoris D'Antoni
Office: 6355, Computer Sciences
Please include "CS703" in the subject.
Email: loris (at) cs (dot) wisc (another dot) edu
We will be meeting on MWF, 1-2.15pm, in COMP SCI 1263 Office hours: Wed 4-5pm or email me.
Course InfoThis course covers recent advances in program verification and synthesis, two techniques aimed at improving software quality and reliability. Broadly speaking, the goal of program verification is to automatically check whether programs contain bugs, while the goal of program synthesis is to automatically generate programs that do not contain bugs.
The course is divided into two main parts:
- We will survey some traditional program verification techniques such as model checking and program logics. You will learn to statically (at compile time) reason about properties of programs. For example, we will show how to prove that a scheduling algorithm cannot cause deadlocks.
- In the second part of the course, you will learn how to synthesize programs from higher-level specifications. For example, we will show how to automatically generate Excel macros from input-output examples only!
EvaluationPerformance will be evaluated as follows:
- 35%: Assignments -- there will be 3 or 4 problem sets throughout the term.
- 35%: Research project
- 10%: Paper reviews
- 10%: Class participation
- 10%: Project presentation
Course ProjectFor the final project, you can work on a problem of your choice with a partner or by yourself.
|Deliverable 1 - Oct 2: Email me a list of three project ideas.|
Deliverable 2 - Oct 16: Submit a 2-3 page proposal
including the following:
|Deliverable 3 - November 4: Description of progress, implementation plan with completed steps checked off, and experimentation plan. Please turn in an updated proposal (with changes marked and your new material added as "Appendix: Progress Report").|
|Deliverable 4 - November 19: Description of progress, implementation plan with completed steps checked off, and experimentation plan. Please turn in an updated proposal (with changes marked and your new material added as "Appendix: Progress Report").|
|Deliverable 5 - Week of December 7 and 14: 15-minute oral presentations (plus 5 minutes for questions/discussion) will be given during class. You will need to e-mail me an abstract (in plaintext) giving the title, project participants, and a two-paragraph to three-paragraph summary of what will be presented.|
|Deliverable 6 - December 15 (last day of classes) Final writeup: The final writeup should be modeled after a typical conference paper. There is no length requirement or limit, but I would expect it to be somewhere around 6-10 pages of ACM's double-column conference formats.|
|1||Sep 11||Course introduction |
Automata and MSO over strings
|2||Sep 13||MSO over strings||
|3||Sep 15||Finished MSO and BDDs||[Pfe]|
|4||Sep 18||Symbolic automata + Start Model checking, infinite strings, and Buchi automata||[Dan] Sec. 1-3 [MCa] Cha. 2-4|
|5||Sep 20||Linear temporal logic (LTL)||[MCa] Cha. 5|
|6||Sep 22||Computation tree logic (CTL)||[MCa] Cha. 6|
Relevant ResourcesThere are no required textbooks for this class. The following is a list of books and articles that should be useful references for different parts of the course.
Monadic second-order logic over strings
- [Tho] Thomas, Languages, automata, and logic. 1996.
Symbolic automata, symbolic transducers, and BDDs
- [Dan] D'antoni, Veanes, The power of symbolic automata and transducers CIAA, 2013.
- [Vea2] Veanes et al., Symbolic Finite State Transducers: Algorithms and Applications POPL, 2012.
- [Pfe] Pfenning, Lecture Notes on Binary Decision Diagrams
Model checking, temporal logic, mu-calculus, and buchi automata.
- [MCa] Baier and Katoen, Principles of Model Checking. The MIT Press, 2008.
- [Bra] Bradfield and Stirling Modal Mu-Calculi
- [ABE] Alur, Bouajjani, Esparza Model checking procedural programs
- [AM09] Alur, Madhusudan Adding nesting structure to words
Learning finite automata and applications
- [Ang] Angluin, Learning Regular Sets from Queries and Counterexamples JIC, 1987.
- [Alu] Alur et al, Synthesis of Interface Specifications for Java Classes POPL, 2005. Use of L* in practice.
- [Pnu] Pnueli and Rosner, On the synthesis of a reactive module POPL, 1989. The first paper on reactive synthesis.
- [Ehr] Ehrenfeucht and Mycielski The Complexity of Mean Payoff Games JGT 1979
Survey on program synthesis
- [Bod] Bodik and Jobstmann Algorithmic program synthesis: introduction JSTT, 2013
- [SL13] Solar-lezama, Program sketching IJSTTT, 2013
- [SGS13] Singh et al, Automated Feedback Generation for Introductory Programming Assignments PLDI, 2013
- [Kun] Kuncak et al, Complete functional synthesis PLDI, 2010
Programming by example
- [Gul2] Gulwani, Automating String Processing in Spreadsheets using Input-Output Examples POPL, 2010
- [Alu2] Alur et al, Syntax-guided synthesis FMCAD, 2013
Synthesis using machine learning and crowd-sourcing:
- [RVY] Raychev, Vechev, Yahav Code Completion with Statistical Language Models PLDI, 2014
- [CDL15] Cochran, D'Antoni, Livshits, Molnar, Veanes Program Boosting: Program Synthesis via Crowd-Sourcing POPL, 2015
- [Sch14] Schkufza et al. Stochastic Optimization of Floating-Point Programs with Tunable Precision ASPLOS, 2013
- [Dia] Diaconis The Markov Chain Monte Carlo Revolution
- [Ose15] Osera et al. Type-and-Example-Directed Program Synthesis PLDI, 2015
A survey on SMT solvers:
- [SMT] Barret et al., Satisfiability Modulo Theories Barret et al., 2008