CpSc 513: Formal Verification -- Reading List

This list will certainly change as the term progresses. Quite a few of the papers are quite long, dense, or both, and we won't actually cover the material in a single class session. Also, I want to do examples on the white board or on the computer. So, I'll adjust the schedule to make room as we go along. I'll note the changes in class, but you should come back to this page to check if you're not sure what we'll be covering.

The URLs that I'm including for the papers use UBC ezproxy links when I could find them. If the proxy isn't working for you, click here to log-in. If you're not from UBC but reading this because you want references on formal verification, that's great! I'll try to remember to include links without the proxy -- if I forget, you can just delete the .ezproxy.library.ubc.ca stuff from the URL.

Formal verification is progressing very rapidly both in research and in applications. There's no way we'll cover the whole field in one term. To help make up for some of the inevitable gaps, I've suggested papers "For Further Reading" throughout this list.

January 7: Course overview

January 9: Formal Methods in practice

January 14: SAT solving with DPLL

I like the presentation in the Handbook of Satisfiability, but I can't find an only version. There are many on-line slide-decks and other descriptions of the algorithm including the original paper in the CACM (here's a link to the PDF).

The plan we decided on in class is that you can find any reference you like. You can write a summary (providing a full citation so I can look it up) and it will count towards your paper summary score loke any other write up. Note: you can find two or more sources, but you'll get credit for one summary -- you can't satisfy the entire paper-summary requirement by finding 20 slide-decks on DPLL and writing a “summary”!

Mark's implementation of DPLL: I'll probably revise, improve, and/or document this code as time goes on.

January 16: SAT solving with CDCL

January 21: SAT solving application

“The Science of Brute Force”, Marijn J.H. Heule and Oliver Kullmann, Communications of the ACM, Vol. 60 No. 8 (Aug. 2017), pages 70-79.

January 23: Distinguished Lecture Series Talk

We need to take an in-class vote: we can have a regular class, I'll either move the reading schedule up one slot, or you can pick a topic that you think we should go back to and fill in some details. Or, we can go to the DLS talk. Here's some info on the DLS talk:

January 28: Finish up CDCL SAT solving

January 30: Binary Decision Diagrams

For further reading (optional):

February 4: Intro to Model Checking

For further reading (optional):

February 6: a model-checking example

February 11: Intro to symbolic execution

For further reading (optional):

February 13: a symbolic execution example

KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs”, C. Cadar, D. Dunbar, and D. Engler, in OSDI'08, pages 209-224 (Dec. 2008).
(non-UBC link)

Feb. 18, 20: spring break

February 25: intro to SMT

For further reading, the “appetizer” paper is an introduction to SMT solving that focuses more on the formal description of the theories of the SMT solver and less on simple examples than the CACM paper listed above:

Feb. 27:

"Delayed Theory Combination vs. Nelson-Oppen for Satisfiability Modulo Theories", R. Bruttomesso, A. Cimatti, et al., Annals of Mathematics and Artificial Intelligence, vol. 55, no. 1-2, Feb. 2009.

Mar. 3: SMT and symbolic execution example:

"Unleashing MAYHEM on Binary Code", S.K. Cha, T. Avgerinos, A. Rebert and D. Brumley,  2012 IEEE Symposium on Security and Privacy

Mar. 5: Resolution

"Validating SAT Solvers Using an Independent Resolution-Based Checker: Practical Implementations and Other Applications", L. Zhang and S. Malik, DATE 2003

Mar. 10: SMT based model checking

"Interpolation and Model Checking", K. McMillan, Handbook of Model Checking, Chapter 14

Mar. 12: SMT based model checking

"Beautiful Interpolants", K. McMillan, CAV 2013

Mar. 17: Theorem proving with ACL2

Efficient execution in an automated reasoning environment”, D.A. Greve, M. Kaufmann, et al., Journal of Functional Programming, 2007.
Examples for lecture: sum.lisp, qsort.lisp.

Mar. 19: More (Moore?) ACL2

Mar. 24: Integrating an SMT Solver into ACL2

Smtlink 2.0”, Y. Peng and M.R. Greenstreet, ACL2 Workshop, 2018.
slides.pdf
Paper mentioned by Alex Summers: “An Empirical Study on the Correctness of Formally Verified Distributed Systems”, EuroSys'17.

Mar. 26: More on Smtlink

Application of Smtlink: “Verifying Timed, Asynchronous Circuits using ACL2”, ASYNC'2019.

Mar. 31: Separation logic

O'Hearn, "Separation Logic, CACM, February 2019, http://dx.doi.org/10.1145/3211968

Apr. 2: Applications of separation logic

Apr. 7: Synthesis

Choose one of the papers below: Here's the public canvas link for class visitors.

And beyond...

Thanks for a good semester. I look forward to seeing your projects and am happy to discuss any aspect of them by e-mail. When we're allowed back on campus, I'll bake that batch of brownies or cookies that I've promised and you can drop by.