{"id":17042591,"url":"https://github.com/carstenkoenig/satsolver","last_synced_at":"2025-06-29T15:04:28.374Z","repository":{"id":11183536,"uuid":"13561804","full_name":"CarstenKoenig/SatSolver","owner":"CarstenKoenig","description":"simple solver for expressions in the propositional logic","archived":false,"fork":false,"pushed_at":"2014-03-18T13:04:40.000Z","size":136,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T01:41:26.401Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CarstenKoenig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-14T13:21:47.000Z","updated_at":"2016-03-25T12:21:05.000Z","dependencies_parsed_at":"2022-08-31T11:03:02.539Z","dependency_job_id":null,"html_url":"https://github.com/CarstenKoenig/SatSolver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CarstenKoenig/SatSolver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarstenKoenig%2FSatSolver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarstenKoenig%2FSatSolver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarstenKoenig%2FSatSolver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarstenKoenig%2FSatSolver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CarstenKoenig","download_url":"https://codeload.github.com/CarstenKoenig/SatSolver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarstenKoenig%2FSatSolver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262614456,"owners_count":23337277,"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":[],"created_at":"2024-10-14T09:17:52.199Z","updated_at":"2025-06-29T15:04:28.304Z","avatar_url":"https://github.com/CarstenKoenig.png","language":"Haskell","readme":"# simple SAT solver\n\n## overview\n\nThis programm tries to find out if a set of prop. logical sentences is satisfiable (that is: is there a assignment of truth-values such that all sentences are true?).\n\nThe idea/background for this is me having a look at the first few lessons of the coursere-course [Introduction to Logic](https://www.coursera.org/course/intrologic).\nIn the second week the basic algorithm I use here is explained/introduced.\n\nThe algorithm used to search for solutions tries to find these by backtracking and propagation of known facts\nstep by step the system of sentences are simplified (by choosing truth-assignments for open variables and propagating the effects)\ntill either there is a known FALSE fact in the system (in this case backtracking happens and on the top level there is no solution)\nor all facts in the system are TRUE in this case the found truth-assignment is returned\n\n## Parser - Description\n\nOn top of this sits a simple expression parser that can handle simple strings like this:\n\n - variables starts with a letter followed by letters or numbers\n - not         = '~'\n - and         = '\u0026'\n - or          = '|'\n - implication = '=\u003e'\n - equivalence = '=='\n - precedence is from top to bottom in this list, sub-sentences can be grouped with parentheses '(..)'\n\n### Example\n\n    p =\u003e ~q \u0026 p; p | r\n\n    .. SAT - tester ..\n    please input your system of sentences (separeted by ';'):\n    p =\u003e ~q \u0026 p; p | r\n    the system [p =\u003e ~q \u0026 p; p | r] is satisfied by p=True, q=False\n\n\n## Usage\nYou can solve such a string with a friendly message using satTest or by running main - which ask you for it","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarstenkoenig%2Fsatsolver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarstenkoenig%2Fsatsolver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarstenkoenig%2Fsatsolver/lists"}