Modern SAT solvers: fast, neat and underused
Since I cannot find it mentioned in the OP nor in the comments: if you want to experiment with SAT, the pysat package might be a pretty good start.<p><a href="https://github.com/pysathq/pysat" rel="nofollow">https://github.com/pysathq/pysat</a><p>The API is not exactly Pythonic (numpy/scipy/opencv style) but it's loaded with features.