Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tortis/elm-sat
A simple DPLL SAT solver in Elm
https://github.com/tortis/elm-sat
dpll-algorithm elm elm-lang sat sat-solver
Last synced: 26 days ago
JSON representation
A simple DPLL SAT solver in Elm
- Host: GitHub
- URL: https://github.com/tortis/elm-sat
- Owner: tortis
- License: mit
- Created: 2020-01-13T04:14:19.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-01-13T06:50:40.000Z (almost 5 years ago)
- Last Synced: 2024-10-21T18:46:49.253Z (2 months ago)
- Topics: dpll-algorithm, elm, elm-lang, sat, sat-solver
- Language: Elm
- Homepage: https://package.elm-lang.org/packages/tortis/elm-sat/latest/
- Size: 22.5 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Elm Sat [![pipeline status](https://gitlab.com/findley/elm-sat/badges/master/pipeline.svg)](https://gitlab.com/findley/elm-sat/commits/master)
A simple [DPLL](https://en.wikipedia.org/wiki/DPLL_algorithm) sat solver implemented in Elm.Note: This repository is maintained at https://gitlab.com/findley/elm-sat and mirrored to https://github.com/tortis/elm-sat.
## Usage
The Problem type is just an alias for `List (List Int)`. Variables (literals) are represented by integers where a negative integer indicates negation of the literal.Sat problems must be in [CNF]() form.
```Elm
import Satproblem : Sat.Problem
problem = [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ -1, -2, -3 ], [ 2, 3 ], [ -2, -3 ] ]solution : Maybe Sat.Solution
solution = Sat.solve problem -- Just [1,2,-3]
```The Sat.Utils module exposes `fromDimacs` which will turn a DIMACS formatted string into a Problem.
## Performance
Elm Sat performance appears to be worse than [MiniSAT compiled to JS](https://jgalenson.github.io/research.js/demos/minisat.html). Adding benchmarks and improving performance are areas for future development.## License
This code is distributed under the MIT license, see the [LICENSE](LICENSE) file.