Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jrclogic/smcdel

A symbolic model checker for Dynamic Epistemic Logic.
https://github.com/jrclogic/smcdel

epistemic-logic haskell logic model-checking symbolic

Last synced: 6 days ago
JSON representation

A symbolic model checker for Dynamic Epistemic Logic.

Awesome Lists containing this project

README

        

# SMCDEL

[![Release](https://img.shields.io/github/release/jrclogic/SMCDEL.svg)](https://github.com/jrclogic/SMCDEL/releases)
[![Hackage](https://img.shields.io/hackage/v/smcdel.svg)](https://hackage.haskell.org/package/smcdel)
[![GitLab CI](https://gitlab.com/m4lvin/SMCDEL/badges/master/pipeline.svg)](https://gitlab.com/m4lvin/SMCDEL/-/pipelines)
[![Test Coverage](https://gitlab.com/m4lvin/SMCDEL/badges/master/coverage.svg)](https://gitlab.com/m4lvin/SMCDEL/-/jobs/artifacts/master/file/hpc/combined/all/hpc_index.html?job=test)
[![DOI](https://zenodo.org/badge/36519077.svg)](https://zenodo.org/badge/latestdoi/36519077)

A symbolic model checker for [Dynamic Epistemic Logic](https://plato.stanford.edu/entries/dynamic-epistemic).

## Online

You can try SMCDEL online here: https://w4eg.de/malvin/illc/smcdelweb/

## Basic usage

1) Use *stack* from https://www.stackage.org

- `stack install` will build and install an executable `smcdel`
into `~/.local/bin` which should be in your `PATH` variable.

2) Create a text file `MuddyShort.smcdel.txt` which describes the knowledge structure and the formulas you want to check for truth or validity:

```
-- Three Muddy Children in SMCDEL
VARS 1,2,3
LAW Top
OBS alice: 2,3
bob: 1,3
carol: 1,2
WHERE?
[ ! (1|2|3) ] alice knows whether 1
VALID?
[ ! (1|2|3) ]
[ ! ((~ (alice knows whether 1)) & (~ (bob knows whether 2)) & (~ (carol knows whether 3))) ]
[ ! ((~ (alice knows whether 1)) & (~ (bob knows whether 2)) & (~ (carol knows whether 3))) ]
(alice,bob,carol) comknow that (1 & 2 & 3)
```

3) Run `smcdel MuddyShort.smcdel.txt` resulting in:

```
>> smcdel MuddyShort.smcdel.txt
SMCDEL 1.0 by Malvin Gattinger -- https://github.com/jrclogic/SMCDEL

At which states is ... true?
[]
[1]

Is ... valid on the given structure?
True
```

More example files are in the folder [Examples](https://github.com/jrclogic/SMCDEL/tree/master/Examples).

4) To also build and install the web interface, run `stack install --flag smcdel:web`
Then you can run `smcdel-web` and open .

## Advanced usage

The executables only provide model checking for S5 with public announcements.
For K and to define more complex models and updates, SMCDEL should be used as a Haskell library.
Please refer to the [Haddock documentation](https://hackage.haskell.org/package/smcdel) for each module.

Examples can be found in the folders
[src/SMCDEL/Examples](https://github.com/jrclogic/SMCDEL/tree/master/src/SMCDEL/Examples)
and
[bench](https://github.com/jrclogic/SMCDEL/tree/master/bench).

*Dependencies*:
To get all visualisation functions working, [graphviz](https://graphviz.org/), [dot2tex](https://github.com/kjellmf/dot2tex) and some LaTeX packages should be installed.
On Debian, please do `sudo apt install graphviz dot2tex libtinfo5 texlive-latex-base poppler-utils preview-latex-style texlive-pstricks`.

## Used BDD packages

SMCDEL uses different BDD packages.

- [Data.HasCacBDD](https://github.com/m4lvin/HasCacBDD) which runs CacBDD from .
This is the default choice used by the executables and the modules `Symbolic.S5` and `Symbolic.K`.

- The pure Haskell library [`decision-diagrams`](https://github.com/msakai/haskell-decision-diagrams).
It is used by the module `Symbolic.S5_DD`.

- Optionally, [Cudd](https://github.com/davidcock/cudd) ([with some patches](https://github.com/m4lvin/cudd))
which uses the CUDD library.
To obtain the modules `SMCDEL.Symbolic.S5_CUDD`, `SMCDEL.Symbolic.S5_K`, `SMCDEL.Symbolic.S5_Ki`
you should compile with `stack build --flag smcdel:with-cudd`.

## References

Main reference for the theory behind the implementation, also containing benchmarks:

- [Malvin Gattinger:
*New Directions in Model Checking Dynamic Epistemic Logic.*
PhD thesis, ILLC, Amsterdam,
2018](https://malv.in/phdthesis/).

Additional publications:

- [Johan van Benthem, Jan van Eijck, Malvin Gattinger, and Kaile Su:
*Symbolic Model Checking for Dynamic Epistemic Logic.*
In: Proceedings of The Fifth International Conference on Logic, Rationality and Interaction (LORI-V),
2015](https://doi.org/10.1007/978-3-662-48561-3_30).

- [Johan van Benthem, Jan van Eijck, Malvin Gattinger, and Kaile Su:
*Symbolic Model Checking for Dynamic Epistemic Logic --- S5 and Beyond.*
Journal of Logic and Computation,
2017](https://pure.uva.nl/ws/files/25483686/2016_05_23_del_bdd_lori_journal.pd.pdf).

- [Malvin Gattinger:
*Towards Symbolic Factual Change in DEL.*
ESSLLI 2017 student session,
2017](https://w4eg.de/malvin/illc/2017-07-symbolicfactualchange.pdf).

- [Daniel Miedema, Malvin Gattinger:
*Exploiting Asymmetry in Logic Puzzles: Using ZDDs for Symbolic Model Checking Dynamic Epistemic Logic*,
TARK 2023,
2023](https://doi.org/10.4204/EPTCS.379.32)