MCK: Model Checking Knowledge

MCK is a model checker for the logic of knowledge, developed at the School of Computer Science and Engineering at the University of New South Wales.

The system is intended as a testbed for a variety of approaches to model checking the logic of knowledge. The novelty of this model checker is that it supports several different ways of defining knowledge given a description of a multi-agent system and the observations made by the agents: observation alone; observation and clock; and perfect recall of all observations. Both linear and branching time temporal operators are supported. Currently, the system is based primarily on BDD-based model checking algorithms, but other approaches will be added as the system develops.

This work has been funded by an Australian Research Council Discovery Grant awarded to Ron van der Meyden. Peter Gammie was responsible for the current release. Extensions developed by Kai Baukus and Jeremy Lee will be included in a future release.

Documentation

The manual is available: mck.ps.gz (295k).

Examples

The following are some examples that we have studied using the system. The distribution contains a number of variants of these examples.

A Robot with a Noisy Position Sensor

This is an example of verifying the implementation of a knowledge based program, in the sense of Fagin, Halpern, Moses and Vardi, Reasoning about Knowledge, MIT Press, 1995. The example is drawn from this book, and is a discretized version of an example of Brafman et al, JACM 97.

(MCK input file for the Robot)

One time Pad

This tests the security of the One Time Pad cipher on a single bit.

(MCK input file for the one time pad)

Increasing Mutual Knowledge in a Message Passing System

An example from R. van der Meyden, Common Knowledge and Update in Finite Environments, Information and Computation, 1998 that shows that in a message passing system with bounded but uncertain delivery times, the level of mutual knowledge about message delivery increases with time.

(MCK input file for the message passing system)

The Dining Cryptographers

The dining cryptographers protocol is a protocol for anonymous broadcast. For details see: D. Chaum The dining cryptographers problem: unconditional sender and recipient untraceability, Journal of Cryptology(1), 1988.

MCK input file for the protocol: dc_agent_protocol

An environment description setting up the protocol for 3 cryptographers sitting around a table: dc_environment3

Rivest's Oblivious Transfer Protocol

A protocol for oblivious transfer, with a trusted third party who does not need to be online at the time of the transfer. From Ronald L. Rivest. Unconditionally secure commitment and oblivious transfer schemes using private channels and a trusted initializer. (Unpublished report, available here).

MCK input file for Rivests protocol

Two Phase Commit

Two phase commit is a solution to the atomic commitment problem tpc3.

Source Code

The system is being made available under the Gnu Public License.

DOWNLOAD MCK AND/OR THE HBDD LIBRARY

The system is written in Haskell with calls to Long's BDD package for BDD operations. To compile the MCK system, you will also need to install the following:

The system runs on Linux and Mac OS X. We have not tried other platforms as yet and would welcome positive and negative reports on this.

The current version of MCK is an alpha version. We make no warranty that the design of the system or its input language is stable, and welcome suggestions for improvements. We are particularly interested in hearing about novel applications.

Related Publications

Contact Information

Please email bug reports and all requests relating to this software to mck at cse dot edu dot au
Webmaster
Last modified: Thu Oct 30 16:07:57 CET 2003