CSCI 699: Computer-Aided Verification

Spring 2020

Logistics

Class: Mondays and Wednesdays, 5–6:50pm, GFS 220
Instructor: Mukund Raghothaman (raghotha@usc.edu)
Office hours: Fridays, 3–5pm, or by appointment, SAL 308

Course Description

This course is about the theory and practice of algorithmic program verification. We will discuss how programmers can prove that their code is correct, and how this process may be automated. We will study SAT and SMT solvers, and learn how to use them and how they work. These are sophisticated reasoning engines, and their use increasingly impacting other areas of computer science. We will see how they can be used to build automatic program synthesizers, which produce code that is correct-by-construction. [Syllabus]

Prerequisites: First, the course will expect a certain amount of mathematical maturity from its students, at least at the level of CSCI 170, and preferably at the level of CSCI 270. Second, we will be reasoning about code: we expect that the student will already be proficient in writing it.

Note: The syllabus and schedule listed on this webpage are tentative, and may be updated as the course progresses. Please check back regularly!

Grading

The course will consist of four homework assignments and an open-ended project, graded equally. The homework assignments are intended to develop familiarity with the material covered in class. In the project, you will apply and extend ideas from the course to a research problem of your choice. The project may be done either alone or in pairs. Please consult the instructor for feedback while choosing project topics.

Annonucements

Readings

  1. Michael Gordon. Background Reading on Hoare Logic. 2016. Accessible from here.
  2. Daniel Kroening and Ofer Strichman. Decision Procedures: An Algorithmic Point of View. 2nd edition. Springer, 2016. From within USC, the book may be freely accessed at here, and supplementary material is available here.
  3. Anders Møller and Michael Schwartzbach. Static Program Analysis. Department of Computer Science, Aarhus University. 2018. Accessible from here.
  4. Susan Horwitz. Abstract Interpretation. 2013. Accessible from here.
  5. Sumit Gulwani, Oleksandr Polozov, and Rishabh Singh. Program Synthesis. Foundations and Trends in Programming Languages, 2017. Accessible from here.

Schedule

Unit 1: Techniques of Proof

Jan 13 Course introduction, motivation, logistics. [Intro slides]
Jan 15 The Program Verification Problem for a Simple Programming Language.
Jan 20 No class. MLK Day.
Jan 23 No class. Mukund away at POPL.
Jan 27 Symbolic Execution. See slides by Emina Torlak and Michael Hicks.
Jan 29 Inductive invariants, verification conditions, and program correctness. See slides by Jonathan Aldrich, and Chapters 1, 2, 3 and 5 of Mike Gordon's lecture notes.
Feb 3 Automatic invariant generation. See CAV 2015 tutorial presented by Madhusudan Parthasarathy and Pranav Garg. [Notes from class].
Feb 5 Proving that programs terminate. See Byron Cook et al., CACM 2011. Also see his talk on the topic.

Unit 2: Engines of Reason

Feb 10 Propositional logic, satisfiability and validity. [Notes from class]
Feb 13 Basics of SAT solvers: DPLL, unit propagation, and solving Horn-SAT in polynomial time. Read chapters 1 and 2 of Kroening and Strichman. [Notes from class]
Feb 17 No class. President's Day.
Feb 19 Solving 2-SAT in polynomial time. [Notes from class]
Feb 24 Tutorial on Homework 1. [Notes from class], [Example Dafny program]
Feb 26 Tutorial on Homework 1. [Notes from class]
Mar 2 Conflict driven clause learning, and an introduction to SMT. See this animation of clause learning in action, and slides prepared by Clark Barrett. Read chapters 3, 4 and 10 of Kroening and Strichman. [Notes from class]
Mar 4 SMT solvers (contd.) [Notes from class]
Mar 9 Concluding our discussion of SMT solvers. [Notes from class]

Unit 3: Static Analysis and Abstract Interpretation

Mar 11 Introduction to predicate abstraction. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Mar 16 No class. Spring recess.
Mar 18 No class. Spring recess.
Mar 23 Predicate abstraction, contd. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Mar 25 Counter-example guided abstraction refinement (CEGAR). See Daniel Kroening's lecture slides from SSFT 12. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Mar 30 CEGAR, contd. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 1 Fundaments of dataflow analysis. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 6 Dataflow analysis, contd. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 8 Dataflow analysis, concl. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 10 [Link to Zoom workspace for office hours]

Unit 4: Program Synthesis

Apr 13 Specifying user intent and syntactic bias. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 15 The syntax-guided synthesis framework (SyGuS). [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class], [max2.sl], [max3.sl], [boolean-formulas.sl], [hd-11-d5.sl]
Apr 17 [Link to Zoom workspace for office hours]
Apr 20 Version spaces and counter-example guided inductive synthesis (CEGIS). [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 22 CEGIS, contd. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 24 [Link to Zoom workspace for office hours]
Apr 27 Enumerative, symbolic, and stochastic program synthesis. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
Apr 29 Applications (contd.): Proving termination using SyGuS, and course wrap-up. [Link to class Zoom workspace], [Link to shared Google Doc], [Notes from class], [Recording of class]
May 1 [Link to Zoom workspace for office hours]

Policies

From Dornsife's academic conduct policy: Plagiarism—presenting someone else's ideas as your own, either verbatim or recast in your own words—is a serious academic offense with serious consequences. Please familiarize yourself with the discussion of plagiarism in SCampus in Part B, Section 11, "Behavior Violating University Standards." Other forms of academic dishonesty are equally unacceptable. See additional information in SCampus and university policies on scientific misconduct, here.

Discrimination, sexual assault, intimate partner violence, stalking, and harassment are prohibited by the university. You are encouraged to report all incidents to the Office of Equity and Diversity / Title IX Office here, and / or to the Department of Public Safety. This is important for the health and safety of the whole USC community. Faculty and staff must report any information regarding an incident to the Title IX Coordinator who will provide outreach and information to the affected party. The sexual assault resource center webpage fully describes reporting options. Relationship and Sexual Violence Services webpage provides 24/7 confidential support.

Note on collaborative work: For collaborative projects, students are expected to have equal distribution of work. If there is any perceived imbalance in the collaborative project, the student should bring this to the attention of the instructor or the teaching assistant.

Assistance with writing and disabilities: Several USC's schools provide support for students who need help with scholarly writing. Check with your advisor or program staff to find out more. Students whose primary language is not English should check with the American Language Institute which sponsors courses and workshops specifically for international graduate students. The Office of Disability Services and Programs provides certification for students with disabilities and helps arrange the relevant accommodations. If an officially declared emergency makes travel to campus infeasible, USC Emergency Information will provide safety and other updates, including ways in which instruction will be continued by means of Blackboard, teleconferencing, and other technology.

Last updated: Fri Dec 24 05:02:19 AM PST 2021