packages feed

incremental-sat-solver 0.1.1 → 0.1.2

raw patch · 2 files changed

+15/−7 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

Data/Boolean/SatSolver.hs view
@@ -96,15 +96,23 @@  -- private helper functions -updateSolver :: CNF -> [(Int,Bool)] -> SatSolver -> SatSolver-updateSolver cs bs solver =-  solver { clauses  = cs,-           bindings = foldr (uncurry IM.insert) (bindings solver) bs }+updateSolver :: MonadPlus m => CNF -> [(Int,Bool)] -> SatSolver -> m SatSolver+updateSolver cs bs solver = do+  bs' <- foldr (uncurry insertBinding) (return (bindings solver)) bs+  return $ solver { clauses = cs, bindings = bs' } +insertBinding :: MonadPlus m+              => Int -> Bool -> m (IM.IntMap Bool) -> m (IM.IntMap Bool)+insertBinding name newValue binds = do+  bs <- binds+  maybe (return (IM.insert name newValue bs))+        (\oldValue -> do guard (oldValue==newValue); return bs)+        (IM.lookup name bs)+ simplify :: MonadPlus m => SatSolver -> m SatSolver simplify solver = do   (cs,bs) <- runWriterT . simplifyClauses . clauses $ solver-  return $ updateSolver cs bs solver+  updateSolver cs bs solver  simplifyClauses :: MonadPlus m => CNF -> WriterT [(Int,Bool)] m CNF simplifyClauses [] = return []@@ -130,7 +138,7 @@ guess :: MonadPlus m => Literal -> SatSolver -> m SatSolver guess literal solver = do   (cs,bs) <- runWriterT (propagate literal (clauses solver) >>= simplifyClauses)-  return $ updateSolver cs bs solver+  updateSolver cs bs solver  shorter :: [a] -> [a] -> Ordering shorter []     []     = EQ
incremental-sat-solver.cabal view
@@ -1,5 +1,5 @@ Name:          incremental-sat-solver-Version:       0.1.1+Version:       0.1.2 Cabal-Version: >= 1.6 Synopsis:      Simple, Incremental SAT Solving as a Library Description:   This Haskell library provides an implementation of the