-------------------------------------------------------------------- -- | -- Copyright : (c) Edward Kmett 2010-2013, Johan Kiviniemi 2013 -- License : BSD3 -- Maintainer: Edward Kmett -- Stability : experimental -- Portability: non-portable -- -------------------------------------------------------------------- module Ersatz.Solver ( module Ersatz.Solver.Minisat , solveWith ) where import Data.Default import Ersatz.Decoding import Ersatz.Monad import Ersatz.Solution import Ersatz.Solver.Minisat solveWith :: (Monad m, Decoding a) => Solver m -> SAT m a -> m (Result, Maybe (Decoded a)) solveWith solver m = do (a, qbf) <- runSAT m (\a s -> return (a , s)) def (res, litMap) <- solver qbf return (res, decode (solutionFrom litMap qbf) a)