June 14-25, Politecnico di Milano
Michal Young [email: michal@cs.uoregon.edu]
Jump to: Home | Schedule | Lectures
Read before first class:
Gerard Holzmannn, "The Model Checker Spin"
Origins of FSV
When is FSV needed? When is it possible?
Automating state exploration
Exercise: Parking garage model
Read before class:
Lamport, "A Simple Approach to Specifying Concurrent Programs"
Simple safety properties (invariants)
Sequencing properties
A first look at temporal logic
Safety vs. liveness
Sequencing properties that are still safety properties
Liveness properties
Fairness properties
Temporal logic
Linear time temporal logic (LTL)
Branching time temporal logic (CTL)
Complexity and expressiveness
Exercise: Discuss solutions to garage exercise. Code solutions in Promela and verify with Spin.
Read before Thursday class. It may be best to skip the portion on fairness, at least until the rest makes sense.
Clarke, Emerson, Sistla, "Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications"
Read before Friday class. A lot of this will be unfamiliar and difficult to absorb at first; just try to get the main ideas of the approach if you can.
Biere, Cimatti, Clarke, Fujita, and Zhu, "Symbolic Model Checking using SAT Procedures Instead of BDDs," Proc. 36th ACM/IEEE Conference on Design Automation, pp 317-320, New Orleans, Louisiana, USA, 1999.
Explicit model checking with CTL
Explicit model checking with LTL (as in Spin)
Implicit approaches
Symbolic model checking with BDDs
Symbolic model checking with SAT-solvers
Constraint-based approaches: INCA, FLAVERS
Exercise: Coffee machine model
Read before Tuesday's class:
Jackson, "Alloy: A Lightweight Object Modeling Notation"
Data modeling with alloy
Exercise: Alloy exercise
Alloy continued
Data flow analysis
Type and effect systems
Read before class Thursday:
Corbett et al: "Bandera: Extracting Finite-State Models from Program Source Code"
Read before class Friday:
Hallem et al: , "A System and Language for Building System Specific, Static Analyses"
Abstraction and model extraction
Specification patterns
Architecture analysis
Conformance testing
Direct analysis of code (e.g. Metal)
What's really needed? Little theorems about big programs (shallow,
global analysis)?
Big theorems about just the tricky parts? Handbooks of
verified patterns?
Wrapping up