Department of Computer Science
I'm always tweaking the reading list this year, so this list will grow gradually. Also, I'm building on the old reading list, so if you go read the commented-out HTML, you'll see old readings listed. Some of those we'll use, but some we won't. (But they're all good papers...)
Markers for roughly when each reading is likely to be appropriate are only approximate, since what we cover each lecture can change.
Week 0:
I used to have a very simple introductory article, giving an industry perspective on formal verification, but it's very out-of-date. I've been looking for a good replacement, but haven't found the perfect paper. Here are some optional readings:
Week 1:
Randal E. Bryant, "Symbolic Boolean Manipulation with Ordered Binary Decision Diagrams", ACM Computing Surveys, Vol. 24, No. 3 (September 1992), pp. 293-318. (Preprint published as CMU CS Tech Report CMU-CS-92-160.) Sections 1 to 3 are the relevant ones for now, although the whole paper is excellent. The above link is to an old Postscript file that displays upside down on many viewers now. (Fixed, thanks to Sam Bayless!) Here is a link to the official version at the ACM Digital Library. You have free access from UBC machines.
Karl S. Brace, Richard L. Rudell, and Randal E. Bryant, "Efficient Implementation of a BDD Package", 27th Design Automation Conference, pp. 40-45, 1990. How BDD packages are really implemented. (Optional.) Download article if you're on a UBC machine. Or get a hardcopy from me.
Randal Bryant, "On the Complexity of VLSI Implementations and Graph Representations of Boolean Functions with Applications to Integer Multiplication", IEEE Transactions on Computers, Vol. 40, No. 2, February 1991. A general technique for proving BDDs big for certain functions (and getting better intuition about what makes BDDs big). (Optional. You may find this interesting if you like theory and/or are interested in understanding what makes BDDs blow up.) Download article if you're on a UBC machine.
Here is additional explanation of the combinatorial part of Bryant's multiplication proof. Optional
Week 2:
Lintao Zhang and Sharad Malik, "The Quest for Efficient Boolean Satisfiability Solvers", Invited Paper, Proceedings of 14th Conference on Computer Aided Verification (CAV2002), Copenhagen, Denmark, July 2002, Springer Lecture Notes in Computer Science Volume 2404, pp. 17-36. (Also in Proceedings of 8th International Conference on Computer Aided Deduction (CADE 2002).) A good survey of modern, complete SAT solvers for verification applications.
Here is additional explanation of implication graphs and learning. Optional
My notes above were based in part from this additional paper: Lintao Zhang, Conor F. Madigan, Matthew H. Moskewicz, Sharad Malik, "Efficient Conflict Driven Learning in a Boolean Satisfiability Solver", ICCAD 2001, pp. 279-285. Optional
Vipin Kumar, "Algorithms for Constraint Satisfaction Problems: A Survey", AI Magazine, Volume 13, Number 1, pp. 32-44, 1992. Domagoj Babic pointed me to this survey paper. I don't really like it, because it's very broad, and too AI-ish for this course. However, it is a very broad survey of the general background behind solving constraint satisfaction problems, of which SAT is one instance. You may enjoy reading it as background and landscape behind this very general class of problems. (Optional.)
Lintao Zhang and Sharad Malik, "Validating SAT Solvers Using an Independent Resolution-Based Checker: Practical Implementations and Other Applications," DATE 2003, pp. 10880-10885. This is the classic paper on getting a proof out of a modern SAT solver. It's also a nice description and proof of correctness of the algorithm used in current SAT solvers. This will be moved to later in the course!
On Thursday, I talked about practical tricks for combinational equivalence checking. These are some of the classic references: (Optional)
Week 3:
C. A. R. Hoare, "An Axiomatic Basis for Computer Programming", Communications of the ACM, October 1969, pp. 576-583. This is a classic paper on the basic ideas of software verification. From UBC machines, you'll see a link for the full-text PDF.
R. W. Floyd, "Assigning Meanings to Programs", Proceedings of Symposia in Applied Mathematics, Vol. 19, 1967, pp. 19-32. This is the true original. I can't find an official copy on-line, but there are some scanned copies on-line, e.g. here . I also have a hardcopy reprint and can make copies if anyone is interested. Optional.
Edsger W. Dijkstra, "Guarded Commands, Nondeterminacy, and the Formal Derivation of Programs," Communications of the ACM, 18(8), August 1975, pp. 453-457. Another classic on the foundations of software verification. This paper gets a bit ahead of ourselves, as we'll see guarded commands and non-determinism later, but this introduces weakest precondition. From UBC machines, you'll see a link for the full-text PDF. Optional.
For symbolic simulation of software, here are two invited papers in the International Journal of Parallel Programming. UBC's library has electronic access to these.
Week 4:
I'm still looking for the perfect intro paper on decision procedures for the variety of theories used in software verification. (This now goes under name "Satisfiability Modulo Theories", which I don't like, but it's become standard.) I've selected two readings I like. Please read at least one of these, and I'll be interested in hearing how it went:
psnup or similar
commands to print multiple slides on one page.
Here is a write-up of the example in class, worked in full, of the communicating decision procedures.
Week 5:
David L. Dill, Andreas J. Drexler, Alan J. Hu, and C. Han Yang, "Protocol Verification as a Hardware Design Aid", International Conference on Computer Design, 1992. This is a light weight paper on the value of using very high-level formal verification to debug hardware. It also introduces the Murphi verifier, which is a nice system to play with guarded commands, non-determinism, and reachability.
C. Norris Ip and David L. Dill, "Better Verification Through Symmetry", International Conference on Computer Hardware Description Languages, 1993. This paper describes automatic symmetry reductions for explicit state enumeration -- one of the cool tricks that can greatly reduce the number of states you need to explore. (Optional)
For hash compaction, it looks as if the definitive paper hasn't gotten published yet. I believe the definitive treatment is this manuscript: P. Wolper, U. Stern, D. Leroy, and D. L. Dill, Reliable Probabilistic Verification Using Hash Compaction For a citable reference, try U. Stern and D. L. Dill. A New Scheme for Memory-Efficient Probabilistic Verification, Joint International Conference on Formal Description Techniques for Distributed Systems and Communication Protocols, and Protocol Specification, Testing, and Verification, pages 333-48, 1996. For the newer, better work using Bloom filters, see Peter C. Dillinger and Panagiotis Manolios, Bloom Filters in Probabilistic Verification, FMCAD 2004. ( All of these papers are optional.)
Week 6:
I haven't found a description of the basic reachability computation with BDDs that fits into the course well. Accordingly, I list here three optional papers. The simplest description is one I wrote for a survey paper. Section II.C is the relevant part. Alan J. Hu, "Formal Hardware Verification with BDDs: An Introduction", IEEE Pacific Rim Conference on Communications, Computers, and Signal Processing (PACRIM'97), 1997. This is a bit too breezy for our course. Two other possible papers are "A Unified Framework for the Formal Verification of Sequential Circuits" by Coudert and Madre, which is a dense, but good paper by two of the pioneers in this area, and "Implicit State Enumeration of Finite State Machines using BDD's [sic]" by Touati, Savoj, Lin, Brayton, and Sangiovanni-Vincentelli, which is easier to read, although I don't particularly like some of their notation. Both of these papers appeared in the International Conference on Computer-Aided Design in 1990. ( All of these papers are optional.)
Week 7:
For temporal logic, E. Allen Emerson has written an amazing chapter in the Handbook of Theoretical Computer Science. This book is well worth buying. But, a draft of the chapter is available on-line directly from Allen. This is optional. It's an encyclopedic reference.
J. R. Burch, E. M. Clarke, K. L. McMillan, D. L. Dill, and L. J. Hwang, "Symbolic Model Checking: 10^{20} States and Beyond", Information and Computation, Vol. 98, No. 2, June 1992. This is the journal version of the original paper on symbolic model checking (which appeared in the Conference on Logic in Computer Science in 1990). The paper goes into more depth than what I expect of you and is rather theoretical, but I want you all to understand symbolic model checking for CTL at least. (We'll cover roughly the material from Sections 1-4 and 6 in class.)
Week 8:
This is background material for Ian Mitchell's lectures. We'll use a set of lecture notes developed by John Lygeros of the University of Patras: John Lygeros, "Lecture Notes on Hybrid Systems", Notes for an ENSIETA short course, February 2-6, 2004. . (This document appears to be floating around unpublished. Here is another link if the above is broken. Obviously, we don't have time to go through all of this, but these notes are provided as a background reference for you.
This paper is for Ian's lecture on November 3. Ian M. Mitchell, "Comparing Forward & Backward Reachability as Tools for Safety Analysis" in Hybrid Systems Computation and Control (Alberto Bemporad, Antonio Bicchi, and Giorgio Buttazzo eds.), LNCS 4416, pp. 428-443 (2007). And here is an older version of slides for his lecture.
Week 9:
This paper is for Ian's lecture on November 8. Claire J. Tomlin, Ian M. Mitchell, Alexandre M. Bayen, and Meeko Oishi, "Computational Techniques for the Verification of Hybrid Systems" in Proceedings of the IEEE, volume 91, number 7, pp. 986-1001 (July 2003). And here is the current version of slides for his lecture.
Here are an old version of the slides for Ian's lecture on November 10. For reading, you can look at Chao Yan's homepage for the Coho work done at UBC, and also Goran Frehse, Colas Le Guernic, Alexandre Donze, Scott Cotton, Ray Rajarshi, Olivier Lebeltel, Rodolfo Ripado, Antoine Girard, Thao Dang, and Oded Maler, "SpaceEx: Scalable Verification of Hybrid Systems", International Conference on Computer-Aided Verification (CAV 2011), Springer LNCS 6806, 2011, pp. 379-395.
Week 10:
For predicate abstraction, I'm going to assign:
Satyaki Das, and David L. Dill,
"Successive Approximation of Abstract Transition Relations,"
Proc. of the Sixteenth Annual IEEE Symposium on Logic in Computer Science
(LICS), June 2001.
This paper is a compromise assigned reading between the original
paper on predicate abstraction (see below) and more recent papers
with fancier heuristics. Section 2 is a good review of the
idea of (conservative) abstraction in general, and this paper
still gets cited quite a bit.
The original paper on predicate abstract:
Susanne Graf, and Hassen Saidi,
"Construction of Abstract State Graphs with PVS",
Conference on Computer-Aided Verification (CAV), 1997, Springer LNCS 1254.
(Optional)
is also a great paper, and if you're interested in the idea, you
should take a look as well.
I'm delighted to see MIT has put an entire course on abstract interpretation on-line, taught by Patrick Cousot himself. There's more reading here than you could ever want on abstract interpretation (all of this is optional). Cousot is listing Patrick Cousot, "Abstract Interpretation Based Formal Methods and Future Challenges," Informatics, 10 Years Back -- 10 Years Ahead, Springer LNCS 2000, pp. 138-156, 2001. as the introductory paper on abstract interpretation. I skimmed it, and it looks easier than the original 1977 POPL paper by Patrick and Radhia Cousot which is definitely worth a read, too. BTW, it's funny to see that the final exam is to prove that model checking is just an abstract interpretation.
For basic static program analysis, Michael Schwartzbach from BRICS in Denmark has written a great set of lecture notes. Strangely, the link from his page goes to an internal webserver with an invalid security certificate, but here's another link . This is optional, but it's a great background reference for what we'll talk about on Thursday.
Week 11:
On Tuesday, we finished the static analysis stuff from last week. During lecture, I mentioned the chicken chicken chicken talk, and this is the more serious article (on the importance of giving good talks, by Moshe Vardi, who is very active in the formal verification world in addition to being editor of CACM) where I saw the reference to the aforementioned talk. (The preceding are obviously not assigned readings, but just for fun.)
A. Biere, A. Cimatti, E. M. Clarke, and Y. Zhu, "Symbolic Model Checking without BDDs," Tools and Algorithms for the Analysis and Construction of Systems (TACAS'99), LNCS Vol. 1579. This is the original paper on bounded model checking.
K. L. McMillan, "Interpolation and SAT-Based Model Checking," Computer-Aided Verification: 15th International Conference (CAV'2003), LNCS Vol. 2725, Springer, 2003, pp. 1-13. This paper was a major breakthrough on using interpolation for model checking. It was the "coolest" paper on using SAT for model checking until the IC3 stuff came on the scene just recently.
Lintao Zhang and Sharad Malik, "Validating SAT Solvers Using an Independent Resolution-Based Checker: Practical Implementations and Other Applications," DATE 2003, pp. 10880-10885. This is also a nice time to re-visit this paper, which I had listed many weeks back when we were working on SAT, as the interpolants that Ken usees are derived from the resolution proof. (Optional)
Week 12:
OK, here are the core IC3 papers:
Possibly Later:
For Zvonimir's talk on Monday, if you want background reading, you can take a look at some of his papers (All optional):
For Flavio's talk on Wednesday, the best publicly available reference is Flavio M. De Paula, Marcel Gort, Alan J. Hu, Steven J. E. Wilton, and Jin Yang, "BackSpace: Formal Analysis for Post-Silicon Debug", International Conference on Formal Methods in Computer-Aided Design (FMCAD), 2008, pp. 35-44. (Optional)
Week 10:
I haven't found papers on abstraction that would fit particularly well for the course yet.
Week 11:
Week 12: