User Tools

Site Tools


EPMC - (An Extendible Probabilistic Model Checker, previously known as IscasMC)


EPMC is a model checker for probabilistic models. It is a successor of the model checker IscasMC which only focuses on PLTL model checking over MDP. EPMC supports Markov chains and Markov decision Processes (MDP), and properties specified in PCTL, PLTL and their combination PCTL*. It implements the efficient algorithm in particularly tuned to handle linear time properties, see the report for details. EPMC is written in Java, while including a few off-the-shelf components like SPOT on the server side. The web interface on the client side is written in HTML and JavaScript, such that EPMC enjoys full portability: it can be run from any machine with internet access and a browser, be it a laptop or a mobile phone.

The main characteristics of EPMC are the high modularity of the tool, the possibility to extend EPMC with plugins to add new functionalities, and its availability on multiple platforms. EPMC achieves its flexibility by an infrastructure that consists of a minimal core part and multiple plugins that is very convenient to develop a new model checker based on the core parts of EPMC.

EPMC is mainly developed in Java, but accesses a few libraries written in C/C++ to increase performance or to access well established legacy code. Its graphical user interface (GUI) is a single static webpage. The GUI communicates with the backend, where core functions (like model checking) and high-privilege operations (like file I/O) are realised.

Models supported by EPMC

  • Discrete Time Markov Chains (DTMCs)
  • Markov Decision Processes (MDPs)
  • Continuous Time Markov Chains (CTMCs)
  • Stochastic Multi-player games (SMGs)
  • Probabilistic Parity Games (PPGs)

(All input models can be specified in the PRISM format and JANI format.)

Properties supported by EPMC

  • PCTL
  • PLTL
  • PCTL*
  • CSL (in progress)
  • Transient Properties (in progress)
  • Expected Rewards (in progress)

Example: LTL Pattern Formulas

Manual, structure of the EPMC

EPMC has three main components: the frontend web interface, the backend for handling requests from the frontend, and the model checker engine. A database engine is used to store information.

For more details, please visit here: Manual, structure of the tool.

Access to EPMC

  • Download: EPMC is now available publicly. It can be obtained on GitHub, at this repository.
    Please follow our wiki documentations to build and use EPMC.
  • Online version of EPMC is available here. Screenshot of EPMC online:

EPMC Plugins



This tool is for model checking probabilistic multiagent systems with respect to the probabilistic epistemic logic PETL, which can specify both temporal and epistemic properties. We consider memoryless uniform schedulers in this problem, and the basic idea is to reduce the model checking problem into a mixed integer non-linear programming problem, which can then be solved by using an SMT solver. For more information, please check

How to install and use

This tool is implemented as a plugin in ePMC. The source code can be found at All the implementation details related to PETL model checking are under “epmc-petl/plugins/propertysolver-petl”. And you can find the experiment files used in the paper under “experiment_files”. For building, running and other information about ePMC, please visit

To perform PETL model checking, please set the following options:

--property-solver propositional-explicit,operator-explicit,pctl-explicit-next,petl-explicit-knowledge,pctl-explicit-until-uniform
--prism-flatten false
--model-input-type mas
--property-input-type petl
--smtlib-command-line z3 -smt2 {0} 
--smtlib-version v25 
--constraintsolver-solver smt-lib 
--model-input-files /path/to/your-model /path/to/your-equivalence-relation 
--property-input-files /path/to/your-property

You need to prepare 3 files: one for the model, one for equivalence relations, and one for properties.

The models should be in the PRISM format( Note that we redefine the composition of the modules to make the agents all take one local action in each transition, so the transitions from different modules will not synchronize according to the parallel composition operator.

The equivalence relations are described in this format:

equiv agent1
-- formula1;
-- formula2;
equiv end
equiv agent2
-- formula1;
-- formula2;
equiv end

Each agent in the model has a “equiv (agent name) … equiv end” block, and each block contains a set of formulas. You can use the variables used in the model. All the states satisfying the same formula are regarded as equivalent by the agent. So you can not write formulas such that one state satisfies two or more formulas. If one state can not satisfy any formula, it’s not equivalent to any other states.

The knowledge properties are described like this:

K {agent}  (state_formula)
E/C/D {agent1,..., agentn}  (state_formula)

Other properties can be described by the PRISM language(

Plugin: dpCTL


Differential privacy is a framework for designing and analyzing privacy measures, which has become a gold standard in data privacy. In this tool, the branching time temporal logic dpCTL is developed for specifying differential privacy. Several differentially private mechanisms are formalized as Markov chains or Markov decision processes. Using formal models, subtle privacy conditions are specified by dpCTL. In order to verify privacy properties automatically, model checking problems are investigated. We implement a model checking algorithm for Markov chains and for MDPs, it's shown to be undecidable.

Our tool is built as a plugin of the model checker EPMC, and now is publicly available on GitHub at this repository. It now supports input files consisting of models and properties (both in the standard prism format.) For more information on how to use the tool, please refer to this page How to use the tool.

Case Studies

Other projects

The following are projects related to EPMC:

  • EPMC-PAMC: A model checker for probabilistic alternating-time Mu-Calculus.
  • ROLL: A learning based tool for models inferring.


Comments and feedback about any aspect of ePMC are very welcome. Please contact:

main.txt · Last modified: 2021/02/26 14:41 by clexma