Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
An efficient, embeddable DPLL SAT solver in Haskell
Haskell Shell
Failed to load latest commit information.
bench-results/2008-05-07.1732 used bm results
doc some more wiki entries
etc changes for 1.1
src using the strict state monad yields to much less memory usage in toCnf
tests adjusted test sizes
website License note.
.gitignore Ignore compiled Setup.hs files.
CHANGES mention new license
LICENSE Change licenses to BSD3
Main.hs refactored
README.benchmark Sanely name the test and benchmarking scripts.
Setup.hs Refactor to prepare for release onto Hackage. Describe how these two files work together.
funsat.cabal bumped version and other minor fixes Add hash-bang header


-*- 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

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:

    $ ghc --make -o Setup Setup.hs
    $ ./Setup configure
    $ ./Setup 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

** Dependencies
All the dependences are cabal-ised and available from hackage, or in etc/.

*** parse-dimacs
A haskell CNF file parser.

*** bitset

Something went wrong with that request. Please try again.