Funsat
An efficient, embeddable DPLL SAT solver in Haskell
Install / Use
/learn @dbueno/FunsatREADME
-- mode: outline --
- Funsat: A DPLL-style SAT solver in pure Haskell
Funsat is a native Haskell SAT solver that uses modern techniques for solving SAT instances. Current features include two-watched literals, conflict-directed learning, non-chronological backtracking, a VSIDS-like dynamic variable ordering, and restarts. Our goal is to facilitate convenient embedding of a reasonably fast SAT solver as a constraint solving backend in other applications.
Currently along this theme we provide /unsatisfiable core/ generation, giving (hopefully) small unsatisfiable sub-problems of unsatisfiable input problems (see "Funsat.Resolution").
-
Installation Install using the typical Cabal procedure:
$ cabal configure $ cabal build
This will produce a binary called funsat at ./dist/build/funsat/funsat and a standalone library interface for the solver. If you feel like profiling the code, a profiling binary is automatically built in ./dist/build/funsat-prof/funsat-prof.
** Testing
All the problems in tests/problems should run through.
uf20 and uf50 - satisfiable uuf50 - unsatisfiable
** Dependencies All the dependences are cabal-ised and available from hackage, or in etc/.
*** parse-dimacs A haskell CNF file parser.
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/parse-dimacs
*** bitset http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bitset
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
