This course presents how properties of acting systems and programs can be verified automatically. The basic notion is a transition system: any system that can be described by states and steps. We present how in CTL (computation tree logic) properties like reachability can be described.
Typically, a state space may be very large. One way to deal with this is symbolic model checking: a way in which sets of states are represented symbolically. A fruitful way to do so is by representing sets of states by BDDs (binary decision diagrams).
Definitions and basic properties of BDDs are presented in this course, and also algorithms to compute them, as they are needed for doing CTL model checking.
CTL model checking
After a general introduction to the MOOC, this module starts by a general description of model checking.Then Computation Tree Logic (CTL) is introduced: a language in which properties on transition systems can be described. The algorithm to check whether such a property holds is given in an abstract setting, leaving implicit how sets of states are represented.
BDDs part 1
In this module BDDs (binary decision diagrams) are introduced as decision trees with sharing. They represent boolean functions.
Extra requirements on both decision trees and BDDs are presented from which uniqueness of the representation can be concluded.
BDDs part 2
After some examples of BDD, the algorithm is presented and discussed to compute the ROBDD of any propositional formula.
BDD based symbolic model checking
In this last module the topics of CTL model checking and BDDs are combined: it is shown how BDDs can be used to represent sets of states in a way that the abstract algorithm for CTL mode checking can be used, and much larger state spaces can be dealt with than by using explicit state based model checking. Sever examples are presented.