Before we will go into the details and further improvements of model checking we will discuss first a simple example following the outline of Bérard et al. (2001)[34]:chapt.3.
Figure 8.1:
Model Checking Scenario
|
We will apply the idea of a model checking algorithm presented by Bérard et al. (2001)[34]:chapt.3 to the example automaton in figure 5.5.6 along with a transition graph in figure 5.2 and the execution graph in figure 5.3.
To construct such an algorithm we will use as a guide the following list of CTL-expressions:
- Propositions: as
- Temporal operators:
- Path operators:
If one wants -by practical reasons- more operators one can introduce more operators based on proven equivalences (cf. 6.2 ).
The basic idea of the algorithm of Bérard et al. is to start checking the CTL-expression assuming the most simple cases and then, if the expression is combined of subformulas
to check these subformulas again as long as they are not atomic propositions.
We assume:
-
-
-
-
-
-
-
-
The whole checking algorithm consist of a sequence of different subchecks starting with case 1 with follow up cases if case 1 is not sufficient. Lets call the whole algorithm docheck:
- Case 1: . P is an atomic proposition. One has to check whether
for each state . If q.phi then q.phi := true, otherwise q.phi := false.
- Example: and
, therefore q.phi = true.
- Case 2:
. Call algorithm
. One has to check for all whether q.phi := not(q.psi).
- Example:
. Because
gives q.psi = true for
we get for these states q.phi := not(true) = false. But
, therefore q.psi = false for
, therefore q.phi := not(false) = true in these states.
- Case 3:
. Call algorithm
;
; one has to check for all whether q.phi := and(q.psi1, q.psi2).
- Example:
.
gives q.psi1 = true for
, and q.psi2 = true for
. Because q.phi := and(q.psi1, q.psi2) we get q.phi := true for
- Case 4:
. Call algorithm
; one has to check for all
if q'.psi := true then q.phi = true.
- Example:
.
which gives us q.psi := true for
. Because
both are successors of we can say q.phi = true.
- Case 5:
. Call algorithm
;
; one has first to check for all q whether q.psi2 = true. If so then a set
. In a second step -if L is not empty- one has to check whether q.psi1 = true for some as chained predecessors of some of the q's of L, if so do q.psi1 = true.
- Example:
. Call
;
; which gives us q.psi2 := true for
. Because property g is in and is preceding as well as q.ps1 = true for at least one case and therefore q.phi = true.
- Case 6:
. ....(see exercises below).
Gerd Doeben-Henisch
2010-03-03