packages feed

obdd 0.8.2 → 0.8.4

raw patch · 4 files changed

+35/−18 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- OBDD.Data: instance (GHC.Classes.Eq i, GHC.Classes.Eq v) => GHC.Classes.Eq (OBDD.Data.Node v i)
- OBDD.Data: instance (GHC.Classes.Ord i, GHC.Classes.Ord v) => GHC.Classes.Ord (OBDD.Data.Node v i)
+ OBDD: data OBDD v
+ OBDD: fold :: Ord v => (Bool -> a) -> (v -> a -> a -> a) -> OBDD v -> a
+ OBDD: foldM :: (Monad m, Ord v) => (Bool -> m a) -> (v -> a -> a -> m a) -> OBDD v -> m a
+ OBDD: full_fold :: Ord v => Set v -> (Bool -> a) -> (v -> a -> a -> a) -> OBDD v -> a
+ OBDD: full_foldM :: (Monad m, Ord v) => Set v -> (Bool -> m a) -> (v -> a -> a -> m a) -> OBDD v -> m a
+ OBDD: instance GHC.Classes.Ord v => GHC.Classes.Eq (OBDD.Data.OBDD v)
+ OBDD: models :: Ord k => Set k -> OBDD k -> [Map k Bool]
+ OBDD: null :: OBDD v -> Bool
+ OBDD: number_of_models :: Ord v => Set v -> OBDD v -> Integer
+ OBDD: paths :: Ord v => OBDD v -> [Map v Bool]
+ OBDD: satisfiable :: OBDD v -> Bool
+ OBDD: size :: OBDD v -> Index
+ OBDD: some_model :: Ord v => OBDD v -> IO (Maybe (Map v Bool))
+ OBDD: variables :: Ord v => OBDD v -> Set v
+ OBDD.Data: instance (GHC.Classes.Eq v, GHC.Classes.Eq i) => GHC.Classes.Eq (OBDD.Data.Node v i)
+ OBDD.Data: instance (GHC.Classes.Ord v, GHC.Classes.Ord i) => GHC.Classes.Ord (OBDD.Data.Node v i)
+ OBDD.Operation: infixr 0 ==>
+ OBDD.Operation: infixr 2 ||
+ OBDD.Operation: infixr 3 &&
- OBDD.Cube: dnf :: Ord k => OBDD k -> [Cube k]
+ OBDD.Cube: dnf :: Ord v => OBDD v -> [Cube v]
- OBDD.Cube: greed :: (Ord a, Ord b) => Map a b -> [Set a] -> Set a
+ OBDD.Cube: greed :: forall a b. (Ord b, Ord a) => Map a b -> [Set a] -> Set a
- OBDD.Data: not_ :: () => OBDD v -> OBDD v
+ OBDD.Data: not_ :: OBDD v -> OBDD v
- OBDD.Data: size :: () => OBDD v -> Index
+ OBDD.Data: size :: OBDD v -> Index
- OBDD.Property: size :: () => OBDD v -> Index
+ OBDD.Property: size :: OBDD v -> Index

Files

examples/Sort.hs view
@@ -63,11 +63,11 @@ -- * poset enumeration  data State =-     State { comps:: ! [Comp]-           , poset :: ! Poset-           , args :: ! [Num]-           , form :: ! Bit-           , size :: ! Integer+     State { comps:: ![Comp]+           , poset :: !Poset+           , args :: ![Num]+           , form :: !Bit+           , size :: !Integer            }  start w =@@ -110,20 +110,20 @@     else if size s > 2^d          then return (False,known)          else do-	   let verbose = False+           let verbose = False            case M.lookup (canonical $ poset s) known of              Just (r,prev) -> do                if verbose-	         then putStrLn $ unwords [ show d, show $ size s, show (comps s)+                 then putStrLn $ unwords [ show d, show $ size s, show (comps s)                                   , show r, "iso", show prev ]-		 else putStr "!"+                 else putStr "!"                return (r,known)              Nothing -> do                let go [] known = return (False, known)                    go (c@(x,y):cs) known = do-		     let [s1,s2] = reverse-		                 $ sortOn size-		                 $ map (next w s) [ (x,y), (y,x) ]+                     let [s1,s2] = reverse+                                 $ sortOn size+                                 $ map (next w s) [ (x,y), (y,x) ]                      (a1,k1) <- work w (d-1) s1 known                      if a1                        then do@@ -139,10 +139,10 @@                       $ comparators w                (r,known) <- go candidates known                if verbose-	         then putStrLn $ unwords [ show d, show $ size s, show (comps s)+                 then putStrLn $ unwords [ show d, show $ size s, show (comps s)                                   , show r ]                  else putStr "." -  	       hFlush stdout	 +               hFlush stdout                return                  (r, M.insert (canonical $ poset s) (r, comps s) known) @@ -154,7 +154,7 @@                  $ logBase 2 $ fromIntegral                  $ factorial $ read w            in -- search (read w) b-	       void $ run (read w) b+               void $ run (read w) b   [ w , d ] -> void $ run (read w) (read d)  
obdd.cabal view
@@ -1,6 +1,6 @@ Name:                obdd-Version:             0.8.2-Cabal-Version:       >= 1.8+Version:             0.8.4+Cabal-Version:       1.12 Build-type: Simple Synopsis:            Ordered Reduced Binary Decision Diagrams Description:@@ -37,6 +37,9 @@ Maintainer:          Johannes Waldmann Homepage:            https://github.com/jwaldmann/haskell-obdd +tested-with: GHC == 9.0.1 , GHC == 8.10.4 , GHC == 8.8.4 , GHC == 8.6.5 , GHC == 8.4.4+             , GHC == 8.2.2 , GHC == 8.0.2 , GHC == 7.10.3+                      Source-Repository head     Type: git     Location: git://github.com/jwaldmann/haskell-obdd.git@@ -46,6 +49,7 @@     Hs-Source-Dirs:          src     Exposed-Modules:     OBDD OBDD.Data OBDD.Make OBDD.Operation OBDD.Property, OBDD.Display, OBDD.Linopt, OBDD.Cube     Other-Modules:           OBDD.IntIntMap, OBDD.VarIntIntMap+    Default-Language: Haskell2010     ghc-options: -funbox-strict-fields  test-suite obdd-placement@@ -53,18 +57,21 @@     Type: exitcode-stdio-1.0     Main-Is: Placement.hs     Build-Depends: base, containers, obdd+    Default-Language: Haskell2010  test-suite obdd-domino     Hs-Source-Dirs: examples     Type: exitcode-stdio-1.0     Main-Is: Domino.hs     Build-Depends: base, containers, obdd+    Default-Language: Haskell2010  test-suite obdd-cubism     Hs-Source-Dirs : examples     Type: exitcode-stdio-1.0     Main-Is: Cubism.hs     Build-Depends: base, containers, obdd+    Default-Language: Haskell2010  test-suite obdd-queens     Hs-Source-Dirs : examples@@ -72,18 +79,21 @@     Main-Is: Queens.hs     ghc-options: -threaded -rtsopts     Build-Depends: base, containers, obdd, text+    Default-Language: Haskell2010  test-suite obdd-queens2     Hs-Source-Dirs : examples     Type: exitcode-stdio-1.0     Main-Is: Queens2.hs     Build-Depends: base, containers, obdd+    Default-Language: Haskell2010  test-suite obdd-weight     Hs-Source-Dirs : examples     Type: exitcode-stdio-1.0     Main-Is: Weight.hs     Build-Depends: base, containers, obdd+    Default-Language: Haskell2010      test-suite obdd-sort     Hs-Source-Dirs : examples@@ -91,6 +101,7 @@     Main-Is: Sort.hs     Build-Depends: base, containers, obdd     Ghc-Options: -rtsopts    +    Default-Language: Haskell2010  test-suite obdd-mm0916     Hs-Source-Dirs : examples@@ -98,3 +109,4 @@     Main-Is: MM0916.hs     Build-Depends: base, containers, obdd, array     Ghc-Options: -rtsopts+    Default-Language: Haskell2010
src/OBDD.hs view
@@ -28,3 +28,8 @@ import OBDD.Operation import OBDD.Display import OBDD.Make++import Prelude hiding (not, null)++instance Ord v => Eq (OBDD v) where+  f == g = null $ not $ equiv f g
src/OBDD/Data.hs view
@@ -72,8 +72,8 @@                          -- , icore :: !(Map ( Node v Index ) Index)             , icore :: !(VarIntIntMap v Index)-            , ifalse :: ! Index-            , itrue :: ! Index+            , ifalse :: !Index+            , itrue :: !Index             , next :: !Index             , top :: !Index             }