Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/jrclogic/smcdel
- Owner: jrclogic
- License: gpl-2.0
- Created: 2015-05-29T17:29:59.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-04-24T17:32:26.000Z (6 months ago)
- Last Synced: 2024-04-25T15:21:45.088Z (6 months ago)
- Topics: epistemic-logic, haskell, logic, model-checking, symbolic
- Language: Haskell
- Homepage: https://w4eg.de/malvin/illc/smcdelweb
- Size: 14.1 MB
- Stars: 39
- Watchers: 7
- Forks: 9
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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/SMCDELAt 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)