Constraint Solver in Scala
This is a part of GSOC in Scala:
The goal of this project is to develop a reasonably efficient constraint solver in Scala. You will build on a SAT solver we are developing and will add incremental SAT solving capabilities as well as reasoning about functional data structures. The constraint solver can be used for constraint programming, automated testing, verification, and synthesis in Scala.
The following report describes the SAT solver:
The solver is open source and available on GitHub:
Constraints solvers are fast theorem provers for certain classes of constraints, including propositional logic, theories of algebraic data types, integer arithmetic, arrays, and other theories of interest. Many great tools currently use off-the-shelf SMT solvers. Having a solver fully in Scala would open up further possibilities for integration and optimizations at the boundary between the solver and the system that uses it. It would also simplify the deployment of such tools.
SAT background (practical considerations)
- An Extensible SAT-solver (original MiniSat implementation description)