Building Automated Verifiers

Preconditions

Files:     [Slides]     [Code examples]

Postconditions

Files:     [Slides with solutions]     [Code examples]

Notice that some slides have been corrected after class.

What you should have learned after completing chapter 3:

  • Explain the overall architecture of automated verifiers based on the principle to treat "verification as compilation"
  • Explain what an encoding in the toolchain of a verifier means and what desirable properties, for example soundness, completeness, explainabilit, and efficiency, mean
  • How to justify that an encoding is sound or complete
  • How to obtain more efficient verification conditions through program transformations, specifically dynamic single assignment form (DSA) and passification
  • Strategies for systematically localizing errors if verification fails

Homework

There is no explicit homework that you need to submit. Instead, use this week to work on the first project.

Reading assignment

We will consider programs with loops and procedures in chapter 4. For that, we need a few concepts from domain theory, which you might have seen in other courses, for example program analysis, or not.

As a preparation for next class, please go over the background material on domain theory such that we can have an informed discussion about loops and procedures in class. You can use this form for questions and unclarities about the reading material. I will try to address your questions in class.