14.08.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!