Reactive Systems: Modelling, Specification and Verification - Cs.ioc.ee
Reactive Systems: Modelling, Specification and Verification - Cs.ioc.ee
Reactive Systems: Modelling, Specification and Verification - Cs.ioc.ee
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 6<br />
Hennessy-Milner logic with<br />
recursive definitions<br />
An HML formula can only describe a finite part of the overall behaviour of a process.<br />
In fact, as each modal operator allows us to explore the effect of taking one<br />
step in the behaviour of a process, using a single HML formula we can only describe<br />
properties of a fixed finite fragment of the computations of a process. As<br />
those of you who solved Exercise 5.13 already discovered, how much of the behaviour<br />
of a process we can explore using a single formula is entirely determined<br />
by its so-called modal depth—i.e., by the maximum nesting of modal operators in<br />
it. For example, the formula ([a]〈a〉ff) ∨ 〈b〉tt has modal depth 2, <strong>and</strong> checking<br />
whether a process satisfies it or not involves only an analysis of its sequences of<br />
transitions whose length is at most 2. (We will return to this issue in Section 6.6,<br />
where a formal definition of the modal depth of a formula will be given.)<br />
However, we often wish to describe properties that describe states of affairs<br />
that may or must occur in arbitrarily long computations of a process. If we want<br />
to express properties like, for example, that a process is always able to perform<br />
a given action, we have to extend the logic. As the following example indicates,<br />
one way of doing so is to allow for infinite conjunctions <strong>and</strong> disjunctions in our<br />
property language.<br />
Example 6.1 Consider the processes p <strong>and</strong> q in Figure 6.1. It is not hard to come<br />
up with an HML formula that p satisfies <strong>and</strong> q does not. In fact, after performing<br />
an a-action, p will always be able to perform another one, whereas q may fail to do<br />
so. This can be captured formally in HML as follows:<br />
p |= [a]〈a〉tt but<br />
q |= [a]〈a〉tt .<br />
115