MV : A Tool for Reliable Monitor Development

We present a tool for reliable monitor development. Our tool has a modular approach to specification and verification of monitors by decoupling the behavior and the interface specifications. For the behavior verification we use infinite state verification techniques which enables us to verify a monitor with parameterized constants and arbitrary number of user threads. We automatically generate Java monitors from the input specifications which preserve the verified properties. For the thread verification we use finite state program verification tools which enables us to verify Java threads without any restrictions. The correctness of the user threads is verified using stubs generated from the monitor interfaces instead of the monitors themselves which improves the efficiency of the thread verification significantly. Our tool implements refinement checks which enables the users to design complex monitors by composing interfaces of different monitors.

There are two main approaches to model checking concurrent systems:

We use both symbolic and explicit state automated verification techniques by exploiting the separation between the behavior and the interface of a monitor. We use an infinite-state specification checker (Action Language Verifier ) for the verification of component behaviors. We use a program checker (JPF ) for the verification of the thread behavior.

Usage

MV accepts any combination of these flags.

Here are some examples:

System requirements:

Download executable here