{"id":15288103,"url":"https://github.com/jrclogic/smcdel","last_synced_at":"2025-04-10T14:34:56.954Z","repository":{"id":32923520,"uuid":"36519077","full_name":"jrclogic/SMCDEL","owner":"jrclogic","description":"A symbolic model checker for Dynamic Epistemic Logic.","archived":false,"fork":false,"pushed_at":"2024-04-24T17:32:26.000Z","size":14829,"stargazers_count":39,"open_issues_count":20,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-25T15:21:45.088Z","etag":null,"topics":["epistemic-logic","haskell","logic","model-checking","symbolic"],"latest_commit_sha":null,"homepage":"https://w4eg.de/malvin/illc/smcdelweb","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrclogic.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-29T17:29:59.000Z","updated_at":"2024-04-24T17:03:09.000Z","dependencies_parsed_at":"2024-01-18T12:41:44.844Z","dependency_job_id":"c4da3b0f-fa59-42f2-9946-8e1a05ff2c40","html_url":"https://github.com/jrclogic/SMCDEL","commit_stats":{"total_commits":161,"total_committers":1,"mean_commits":161.0,"dds":0.0,"last_synced_commit":"8eb7619a9364a2d3dbd34c46748ef9713ff6c8dc"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrclogic%2FSMCDEL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrclogic%2FSMCDEL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrclogic%2FSMCDEL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrclogic%2FSMCDEL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrclogic","download_url":"https://codeload.github.com/jrclogic/SMCDEL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248233951,"owners_count":21069493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["epistemic-logic","haskell","logic","model-checking","symbolic"],"created_at":"2024-09-30T15:44:08.652Z","updated_at":"2025-04-10T14:34:56.895Z","avatar_url":"https://github.com/jrclogic.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SMCDEL\n\n[![Release](https://img.shields.io/github/release/jrclogic/SMCDEL.svg)](https://github.com/jrclogic/SMCDEL/releases)\n[![Hackage](https://img.shields.io/hackage/v/smcdel.svg)](https://hackage.haskell.org/package/smcdel)\n[![GitLab CI](https://gitlab.com/m4lvin/SMCDEL/badges/master/pipeline.svg)](https://gitlab.com/m4lvin/SMCDEL/-/pipelines)\n[![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)\n[![DOI](https://zenodo.org/badge/36519077.svg)](https://zenodo.org/badge/latestdoi/36519077)\n\nA symbolic model checker for [Dynamic Epistemic Logic](https://plato.stanford.edu/entries/dynamic-epistemic).\n\n\n## Online\n\nYou can try SMCDEL online here: https://w4eg.de/malvin/illc/smcdelweb/\n\n\n## Basic usage\n\n1) Use *stack* from https://www.stackage.org\n\n- `stack install` will build and install an executable `smcdel`\n  into `~/.local/bin` which should be in your `PATH` variable.\n\n2) Create a text file `MuddyShort.smcdel.txt` which describes the knowledge structure and the formulas you want to check for truth or validity:\n\n    ```\n    -- Three Muddy Children in SMCDEL\n    VARS 1,2,3\n    LAW  Top\n    OBS  alice: 2,3\n         bob:   1,3\n         carol: 1,2\n    WHERE?\n      [ ! (1|2|3) ] alice knows whether 1\n    VALID?\n      [ ! (1|2|3) ]\n      [ ! ((~ (alice knows whether 1)) \u0026 (~ (bob knows whether 2)) \u0026 (~ (carol knows whether 3))) ]\n      [ ! ((~ (alice knows whether 1)) \u0026 (~ (bob knows whether 2)) \u0026 (~ (carol knows whether 3))) ]\n      (alice,bob,carol) comknow that (1 \u0026 2 \u0026 3)\n    ```\n\n3) Run `smcdel MuddyShort.smcdel.txt` resulting in:\n\n    ```\n    \u003e\u003e smcdel MuddyShort.smcdel.txt\n    SMCDEL 1.0 by Malvin Gattinger -- https://github.com/jrclogic/SMCDEL\n\n    At which states is ... true?\n    []\n    [1]\n\n    Is ... valid on the given structure?\n    True\n    ```\n\n    More example files are in the folder [Examples](https://github.com/jrclogic/SMCDEL/tree/master/Examples).\n\n4) To also build and install the web interface, run `stack install --flag smcdel:web`\n   Then you can run `smcdel-web` and open \u003chttp://localhost:3000\u003e.\n\n\n## Advanced usage\n\nThe executables only provide model checking for S5 with public announcements.\nFor K and to define more complex models and updates, SMCDEL should be used as a Haskell library.\nPlease refer to the [Haddock documentation](https://hackage.haskell.org/package/smcdel) for each module.\n\nExamples can be found in the folders\n  [src/SMCDEL/Examples](https://github.com/jrclogic/SMCDEL/tree/master/src/SMCDEL/Examples)\nand\n  [bench](https://github.com/jrclogic/SMCDEL/tree/master/bench).\n\n*Dependencies*:\nTo get all visualisation functions working, [graphviz](https://graphviz.org/), [dot2tex](https://github.com/kjellmf/dot2tex) and some LaTeX packages should be installed.\nOn Debian, please do `sudo apt install graphviz dot2tex libtinfo5 texlive-latex-base poppler-utils preview-latex-style texlive-pstricks`.\n\n\n## Used BDD packages\n\nSMCDEL uses different BDD packages.\n\n- [Data.HasCacBDD](https://github.com/m4lvin/HasCacBDD) which runs CacBDD from \u003chttp://kailesu.net/CacBDD/\u003e.\n  This is the default choice used by the executables and the modules `Symbolic.S5` and `Symbolic.K`.\n\n- The pure Haskell library [`decision-diagrams`](https://github.com/msakai/haskell-decision-diagrams).\n  It is used by the module `Symbolic.S5_DD`.\n\n- Optionally, [Cudd](https://github.com/davidcock/cudd) ([with some patches](https://github.com/m4lvin/cudd))\n  which uses the CUDD library.\n  To obtain the modules `SMCDEL.Symbolic.S5_CUDD`, `SMCDEL.Symbolic.S5_K`, `SMCDEL.Symbolic.S5_Ki`\n  you should compile with `stack build --flag smcdel:with-cudd`.\n\n\n## References\n\nMain reference for the theory behind the implementation, also containing benchmarks:\n\n- [Malvin Gattinger:\n*New Directions in Model Checking Dynamic Epistemic Logic.*\nPhD thesis, ILLC, Amsterdam,\n2018](https://malv.in/phdthesis/).\n\nAdditional publications:\n\n- [Johan van Benthem, Jan van Eijck, Malvin Gattinger, and Kaile Su:\n*Symbolic Model Checking for Dynamic Epistemic Logic.*\nIn: Proceedings of The Fifth International Conference on Logic, Rationality and Interaction (LORI-V),\n2015](https://doi.org/10.1007/978-3-662-48561-3_30).\n\n- [Johan van Benthem, Jan van Eijck, Malvin Gattinger, and Kaile Su:\n*Symbolic Model Checking for Dynamic Epistemic Logic --- S5 and Beyond.*\nJournal of Logic and Computation,\n2017](https://pure.uva.nl/ws/files/25483686/2016_05_23_del_bdd_lori_journal.pd.pdf).\n\n- [Malvin Gattinger:\n*Towards Symbolic Factual Change in DEL.*\nESSLLI 2017 student session,\n2017](https://w4eg.de/malvin/illc/2017-07-symbolicfactualchange.pdf).\n\n- [Daniel Miedema, Malvin Gattinger:\n*Exploiting Asymmetry in Logic Puzzles: Using ZDDs for Symbolic Model Checking Dynamic Epistemic Logic*,\nTARK 2023,\n2023](https://doi.org/10.4204/EPTCS.379.32)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrclogic%2Fsmcdel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrclogic%2Fsmcdel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrclogic%2Fsmcdel/lists"}