Course: CS239-3 Modularity in Program Analysis
Spring 2005
- Lectures: Monday, Wednesday
Location 3915A MS
Scaling program analysis and verification algorithms to large and
complex systems is the biggest challenge in formal verification.
One promising direction is modular analysis, where individual
components are verified under assumptions about their environment,
and the results of the analyses are combined together to infer properties
of the entire system. There has been a lot of recent progress in
precise software analysis techniques, however, none of the available
tools do a good job with modular analysis.
We shall study algorithms for modular verification of systems,
such as assume-guarantee reasoning, game-based reasoning, and interface
theories. This is an advanced graduate class. Students will be required
to read and present key papers and do a substantial project that
implements their ideas in a software verification tool. We shall work
with a few case studies for large software systems which will serve
as benchmarks for the algorithms.
Grading Basis: Class participation, project, and final exam.
Prerequisites
Prerequisites: Knowledge of program analysis, basic algorithms, and
theory of computation (at the CS181 level).
Reading List
- Orna Grumberg and David Long. Model Checking and Modular Verification.
TOPLAS 1994.
- [Monday April 11: Mike]
Patrick Cousot and Radhia Cousot. Modular static program analysis.
CC 2002.
- [Wednesday April 13: Ru-Gang]
Tom Henzinger, Shaz Qadeer, and Sriram Rajamani.
Decomposing refinement proofs using assume-guarantee reasoning, ICCAD 2000.
- [Supplementary Reading Wednesday April 13]
Rajeev Alur and Tom Henzinger.
Reactive Modules.
LICS 96. Contains the proof of soundness for assume guarantee rules.
- [Supplementary Reading Wednesday April 15 and Monday April 18]
SMV User Manual/ Tutorial. Available from
Ken McMillan's home page.
- [Wednesday April 20: Yuliya]
Thomas Reps, Susan Horowitz, and Mooly Sagiv.
Precise interprocedural dataflow analysis via graph reachability.
POPL 1995.
- [Supplementary Reading Wednesday April 20]
Thomas Ball and Sriram Rajamani.
Bebop: A Symbolic Model Checker for Boolean Programs.
SPIN 2000.
- [Wednesday April 27: Joey]
D. Gay, P. Levis, R. von Behren, M. Welsh, E. Brewer and D. Culler.
The nesC Language: A Holistic Approach to Network Embedded Systems.
Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design
and Implementation 2003, San Diego, California, USA, June 9-11, 2003.
and
Eddie Kohler, Robert Morris, Benjie Chen, John Jannotti, and M. Frans Kaashoek.
The Click modular router.
ACM Transactions on Computer Systems 18(3), August 2000, pages 263-297.
- [Wednesday May 4: Jamie]
Luca de Alfaro and Tom Henzinger.
Interface Automata.
Interface theories for component-based design.
Both papers are available
here.
Both Tom and Luca have nice powerpoint slides on this topic on their web pages
that may be of interest.
- [Wednesday May 4: supplementary reading]
There is a CAV 2002 paper by Tom Henzinger and several other people on software
interfaces in nesC.
- Discussion topic for Monday May 9:
What are suitable notions of interfaces for nesC and Click programs?
What information will be useful to have at the interfaces for these systems?
- [Wednesday May 11: Jinbo]
Rajeev Alur, Tom Henzinger, and Orna Kupferman.
Alternating-time temporal logic.
- [Monday May 16: Manav]
Shaz Qadeer and Cormac Flanagan's paper on Thread modular model checking.
You can also read the SPIN 03 paper by the same authors.
- [Wednesday May 18: John]
Tom Henzinger, Ranjit Jhala, and Rupak Majumdar. Race checking
by context inference. PLDI 04.
- [Monday May 23: Ben]
Shaz Qadeer, Sriram Rajamani, and Jakob Rehof.
Summarizing procedures in concurrent programs. Proceedings of the 31st Annual
ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2004.
Available from Shaz Qadeer's home page.
- [Wednesday May 25: Jeff]
Luca de Alfaro, Thomas A. Henzinger, and F.Y.C. Mang.
Detecting errors before reaching them. Proceedings of the 12th
International Conference on Computer-Aided Verification (CAV), Lecture Notes in
Computer Science 1855, Springer-Verlag, 2000, pp. 186-201.
Available here.
- [Wednesday June 1: Jeff Fischer]
Jonathan Aldrich, Vibha Sazawal, Craig Chambers, and David Notkin.
Language Support for Connector Abstractions. In proceedings of the
European Conference on Object-Oriented Programming (ECOOP '03), July 2003.
You can additionally and optionally read Jonathan Aldrich, Craig Chambers,
and David Notkin.
Architectural Reasoning in ArchJava. In
Proceedings of the European Conference on Object-Oriented Programming,
June 2002. This paper gives a formalization of ArchJava.
- [Monday June 6] In class final. Followed by project updates.
- [Wednesday June 8] Project presentations.