Blanc, RĂ©gis William2013-07-302013-07-302013-07-30201310.1145/2489837.2489839https://infoscience.epfl.ch/handle/20.500.14299/93619We present CafeSat, a SAT solver written in the Scala programming language. CafeSat is a modern solver based on DPLL and featuring many state-of-the-art techniques and heuristics. It uses two-watched literals for Boolean constraint propagation, conflict-driven learning along with clause deletion, a restarting strategy, and the VSIDS heuristics for choosing the branching literal. CafeSat is both sound and complete. In order to achieve reasonable performance, low level and hand-tuned data structures are extensively used. We report experiments that show that significant speedup can be obtained from translating a high level algorithm written in a relatively idiomatic Scala style to a more C-like programming style. These experiments also illustrate the importance of modern techniques used by SAT solver. Finally, we evaluate CafeSat against the reference SAT solver on the JVM: Sat4j.scalasat solverdecision procedureconstraint solvingCafeSat: a Modern SAT Solver for Scalatext::conference output::conference proceedings::conference paper