Smattr / rumur

yet another model checker

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rumur

Rumur is a model checker, a formal verification tool for proving safety and security properties of systems represented as state machines. It is based on a previous tool, CMurphi, and intended to be close to a drop-in replacement. Rumur takes the same input format as CMurphi, the Murphi modelling language, with some extensions and generates a C program that implements a verifier.

A more extended introduction is available in doc/introduction.rst

Quickstart

Installation on Ubuntu ≥ 20.04 or Debian

apt install rumur

Installation on FreeBSD

pkg install rumur

Thanks to yuri@FreeBSD for packaging.

Building from Source

First you will need to have the following dependencies installed:

Then:

# Download Rumur
git clone https://github.com/Smattr/rumur
cd rumur

# Configure and compile
mkdir build
cd build
cmake ..
make
make install

# Generate a checker
rumur my-model.m --output my-model.c

# Compile the checker (also pass -mcx16 if using GCC on x86-64)
cc -std=c11 -O3 my-model.c -lpthread

# Run the checker
./a.out

Compilation produces several artefacts including the rumur binary itself:

  • rumur: Tool for translating a Murphi model into a program that implements a checker;
  • murphi2c: Tool for translating a Murphi model into C code for use in a simulator;
  • murphi2murphi: A preprocessor for Murphi models;
  • murphi2xml: Tool for emitting an XML representation of a Murphi model’s Abstract Syntax Tree;
  • librumur.a: A library for building your own Murphi model tools; and
  • include/rumur/: The API for the above library.

Comparison with CMurphi

If you are migrating from CMurphi, you can read a comparison between the two model checkers at doc/vs-cmurphi.rst.

Everything in this repository is in the public domain, under the terms of the Unlicense. For the full text, see LICENSE.

About

yet another model checker

License:The Unlicense


Languages

Language:C++ 56.5%Language:C 11.4%Language:M 6.5%Language:MATLAB 5.0%Language:Python 4.5%Language:Objective-C 4.4%Language:SMT 4.0%Language:Roff 2.5%Language:Yacc 1.6%Language:CMake 1.2%Language:Shell 1.2%Language:Lex 0.7%Language:Limbo 0.2%Language:Emacs Lisp 0.1%Language:Vim Script 0.1%