{"id":20632898,"url":"https://github.com/jdevuyst/tableaux","last_synced_at":"2025-06-17T01:32:51.115Z","repository":{"id":8744600,"uuid":"10422398","full_name":"jdevuyst/tableaux","owner":"jdevuyst","description":"Tableau-based theorem prover for public announcement logic","archived":false,"fork":false,"pushed_at":"2015-01-03T11:54:40.000Z","size":216,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T19:03:50.515Z","etag":null,"topics":["clojure","modal-logic","theorem-prover"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"git-ftp/git-ftp","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdevuyst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-06-01T13:00:37.000Z","updated_at":"2022-06-23T23:53:04.000Z","dependencies_parsed_at":"2022-06-26T00:11:53.740Z","dependency_job_id":null,"html_url":"https://github.com/jdevuyst/tableaux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdevuyst%2Ftableaux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdevuyst%2Ftableaux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdevuyst%2Ftableaux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdevuyst%2Ftableaux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdevuyst","download_url":"https://codeload.github.com/jdevuyst/tableaux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249135813,"owners_count":21218365,"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":["clojure","modal-logic","theorem-prover"],"created_at":"2024-11-16T14:17:45.136Z","updated_at":"2025-04-15T19:04:14.222Z","avatar_url":"https://github.com/jdevuyst.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dynamic Tableaux for Public Announcement Logic\n\nThis Github project contains the Clojure implementation of the 'dynamic' tableau system for public announcement logic that I describe in my [PhD thesis](https://jdevuyst.appspot.com/publications/2013/jdevuyst-phd-thesis.pdf). I briefly touch on some keywords below. For details and documentation, please see my PhD thesis.\n\n## What is public announcement logic?\n\nPublic announcement logic is a logic for reasoning about knowledge and public announcements. Public announcements are a form of learning where all agents simultaneously acquire common knowledge of a particular fact.\n\n[Introductory slides by Jan Plaza](http://faculty.plattsburgh.edu/jan.plaza/research/logic/public-slides.pdf)\n\n## What are tablau systems?\n\nTableau systems are formal systems for constructing models that satisfy a given formula. They can also be used for proving theorems on the assumption that a formula is a theorem iff no model is found using the tableau system (which is the case here).\n\n## What are dynamic tableaux?\n\nIn my dissertation I describe tableau systems for various dynamic modal logics, including public announcement logic. These tableau systems have rules that closely mirror the 'dynamic' semantics of dynamic modal logics.\n\n## Usage instructions\n\nTo get started, perform the following steps.\n\n1. Download the [Java Development Kit (JDK)](http://www.oracle.com/technetwork/java/javase/downloads/bag.html). Beware that installing the Java Runtime Environment (JRE) might not suffice, as it does not add the command line Java app to the system path on some platforms.\n2. Download [Leiningen](http://leiningen.org). This download includes the Clojure environment.\n3. Go to the project root folder (the one containing project.clj) in your terminal.\n4. Run \"lein test\".\n\nAmong other things, this will test some well-known validities (Hilbert axioms, S5 axioms, PAL reduction axioms). These tests are located at the bottom of [test/dyntab/cascade_test.clj](test/dyntab/cascade_test.clj).\n\nIf you're interested in using my theorem prover as a library, you will probably want to look at [src/dyntab/cascade.clj](src/dyntab/cascade.clj) and [src/dyntab/syntax.clj](src/dyntab/syntax.clj) first.\n\nThere currently is no end user interface for the theorem prover.\n\n## Addendum\n\nIn section 7.7 of my PhD thesis I discussed performance when using multiple threads. I wrote that on a quad core machine CPU utilization of 370% was observed and that execution time was nearly halved compared to when one thread was used. It turns out the machine was dual core, however. The fact that more than 200% CPU utilization was reported appears to be due to [hyper-threading](http://en.wikipedia.org/wiki/Hyper-threading). Thus, it appears that the theorem prover scales better than originally stated.\n\nIn the same section I also wrote that the theorem prover code would benefit if the `TupleBag` data structure was replaced by a more general solution. This remark later prompted me to create [Comprehend](https://github.com/jdevuyst/comprehend), a Clojure library for pattern matching on sets. It would be an interesting exercise to reimplement the theorem prover using the Comprehend library.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdevuyst%2Ftableaux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdevuyst%2Ftableaux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdevuyst%2Ftableaux/lists"}