Verifier tactics

Preconditions

Files:     [Slides]     [Code examples]

We will use the second half of this class to work on some hands-on verification problems.

Postconditions

Files:     [Slides with solutions]     [Code examples with solutions]

What you should have learned after completing chapter 6:

  • Identify possible bottlenecks in automated verifiers introduced through incomplete reasoning about quantifiers, e.g. matching loops.
  • The basics of Heuristic quantifier instantiation using pattern-based e-matching.
  • Pragmatic strategies for dealing with verification bottlenecks, such as manually providing ground terms, limited functions (bounding the unfolding depth of functions), supplying suitable triggering patterns, and introducing ghost code.
  • Writing and proving lemmas as ghost methods.
  • Using an automated verifier for proving simple algorithms correct.