The MERC Project
The goal of the MERC project is to provide a generic set of libraries and tools for (specification) language-agnostic model checking, written in the Rust language. The name is an acronym for "mCRL2 except Reliable & Concurrent", which should not be taken literally. Development of the merc project takes place on GitHub.
We aim to demonstrate efficient and correct implementations using (safe) Rust. The main focus is on clean interfaces to allow the libraries to be reused as well. The toolset supports and is tested on all major platforms: Linux, macOS and Windows.
Note
The first release v1.0 of MERC has been published in December 2025, and is available to download on the Github releases page. The corresponding crates have also been published on crates.io.
Overview
Various tools have been implemented so far:
merc-ltsimplement various (signature-based) bisimulation algorithms for labelled transition systems in the mCRL2 binary.ltsformat and the AUTomaton (or ALDEBARAN).autformat.merc-rewriteallows rewriting of Rewrite Engine Competition specifications (REC) using Sabre (Set Automaton Based Rewriting).merc-vpgcan be used to solve (variability) parity games in the PGSolver.pgformat, and a slightly extended variability parity game.vpgformat. Furthermore, it can generate variability parity games for model checking modal mu-calculus on LTSs.merc-pbescan identify symmetries in paramerised boolean equation systems PBES, located in thetools/mcrl2workspace.merc-ltsgraphis a GUI tool to visualize LTSs, located in thetools/GUIworkspace.
Various crates are also published on crates.io, see the crates directory for an overview.
Links
See the links on the left-hand navigation menu for easy access to the issue tracker, documentation and code coverage reports.