A symbolic model checker for Dynamic Epistemic Logic.
You can find a complete literate Haskell documentation in the file SMCDEL.pdf.
Malvin Gattinger: Towards Symbolic Factual Change in DEL. ESSLLI 2017 student session, 2017.
You can try SMCDEL online here: https://w4eg.de/malvin/illc/smcdelweb/
On Debian, just do sudo apt install graphviz dot2tex
.
- Use stack from https://www.stackage.org
-
stack build
will compile everything. This might fail if one of the BDD packages written in C and C++ is missing. In this case, install those manually and then trystack build
again. -
stack install
will put two executablessmcdel
andsmcdel-web
into ~/.local/bin which should be in yourPATH
variable.
-
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)
-
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.
-
To use the web interface run
smcdel-web
and then open http://localhost:3000/index.html.
To deal with more complex models and formulas, use SMCDEL as a Haskell module.
Examples can be found in the folders src/SMCDEL/Examples and bench.
SMCDEL can be used with different BDD packages. To compile and run the benchmarks you will have to install all of them.
- Data.HasCacBDD which runs CacBDD from http://kailesu.net/CacBDD/
- Cudd (with some patches)