CS703 - Fall 2017
Program verification and synthesis

General Information

Loris 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.

News

Sep 13 Homework 1 has been posted.
Sep 23 Review assignment 1Due Sep 29th.
Sep 28 Homework 2 has been posted. It is due on the 12th of October.
Oct 16 Homework 3 and Programming assignment 1 have been posted. They are due on the 6th of October.
Nov 3 Programming assignment 2 has been posted. It is due on November 22nd.

Course Info

This 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:
  1. 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.
  2. 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!

Evaluation

Performance will be evaluated as follows:

Course Project

For 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:
  1. The statement of the problem to be investigated
  2. An explanation of why the problem is interesting
  3. A description of what you propose to do,
    • Explain the elements that you will have to build
    • Explain the elements that you can pick up
    • from open-source sites
    • Explain the experiment(s) or performance measurement(s) that you plan to carry out. Two good approaches are
      • State the hypothesis that you hope to refute.
      • Complete the following sentence: ``The experiments were designed to shed light on the following questions: . . .''
    • Then explain what you plan to measure; how you will measure it (if it is not obvious); and where you will obtain test cases.
    • List the tasks, broken down into two or three milestones
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: 10-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.

Class Schedule

Lecture Dates Topic Info
Sep 6 No Class - Professor traveling
Sep 8 No Class - Professor traveling
1 Sep 11 Course introduction
Automata and MSO over strings
Slides
2 Sep 13 MSO over strings [Tho]
HW1 assigned
3 Sep 15 Finished MSO and BDDs [Pfe]
4 Sep 18 Symbolic automata + Start Model checking [Dan] Sec. 1-3 [MCa] Cha. 2-4
5 Sep 20 Infinite strings and Buchi automata Linear temporal logic (LTL) [MCa] Cha. 4
6 Sep 22 Linear temporal logic (LTL) [MCa] Cha. 5
7 Sep 25 Finish LTL, Project HOWTOs (a bit of synthesis), SMT solvers demo [Bod]
Slides
8 Sep 27 Computation tree logic (CTL) [MCa] Cha. 6 HW1 due
9 Sep 29 Finish CTL, Bisimulation [MCa] Cha. 7 Review due
HW2 assigned
10 Oct 2 Finished Bisimulation [MCa] Cha. 7
11 Oct 4 HW1 discussion and Abstractions [MCa] Cha. 7.4
Project D1 due
12 Oct 6 Model checking procedural programs [ABE], [AM09] (Optional)
13 Oct 9 Model checking procedural programs (finished) [ABE], [AM09] (Optional)
14 Oct 11 Probabilistic systems [MCa] Cha. 10
15 Oct 13 Verifying string maninpulating programs [Vea2]
16 Oct 16 Learning automata with L* [Ang] HW3 assigned P1 assigned
17 Oct 18 Reactive Synthesis [Pnu]
18 Oct 20 Quantitative reactive synthesis [Ehr]
19 Oct 23 Program Sketching [SL13]
20 Oct 25 Counterexample guided inductive synthesis and sketch in practice [SGS13] Sketch
21 Oct 27 Structured search and version space algebra [Gul2]
21 Oct 30 Stochastic search [Dia] [Sch14]
22 Nov 1 Syntax-guided synthesis [Alu2]
23 Nov 3 Synthesis using machine learning [RVY] P2 assigned
24 Nov 6 Repairing Decision-Making Programs under Uncertainty [DAD]
25 Nov 8 Synthesis using quantifier elimination [Kun]
Nov 10-15- No class
26 Nov 17 Program Synthesis using Abstraction Refinement [WDS17]
27 Nov 20 Optimizing Synthesis with Metasketches and synthesis with quantitative objectives [BTGC16], [Qlose]
Nov 22-Dec 6 No class - Project break
28-29-30 Dec 6-8-11 Project presentations
Dec 15 No class Project D6 due

Relevant Resources

There 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.