obdd-0.9.0: obdd.cabal
Cabal-Version: 3.0
Name: obdd
Version: 0.9.0
Build-type: Simple
Synopsis: Ordered Reduced Binary Decision Diagrams
Description:
Construct, combine and query OBDDs;
an efficient representation for formulas in propositional logic.
.
This is mostly educational.
The BDDs do not share nodes (there is no persistent BDD base) and this might introduce inefficiencies.
.
An important (for me, in teaching) feature is
that I can immediately draw the BDD to an X11 window (via graphviz).
For example, to show the effect of different variable orderings,
try this in ghci (type 'q' to close the drawing windows).
.
> import Prelude hiding (not,(&&),(||),and,or,any,all)
> import OBDD
> let f [] = false; f (x:y:zs) = x && y || f zs
> display $ f $ map variable [1,2,3,4,5,6]
> display $ f $ map variable [1,4,2,5,3,6]
.
'OBDD' implements 'Ersatz.Boolean' which re-defines
Boolean operations from the Prelude. The recommended way of using this
is shown in the previous example.
.
If you want better performance, use a library with a persistent BDD base,
e.g., <http://vlsi.colorado.edu/%7Efabio/CUDD/ CUDD>
<https://hackage.haskell.org/package/cudd Haskell bindings>,
see <https://gitlab.imn.htwk-leipzig.de/waldmann/min-comp-sort this example>.
category: Logic
License: GPL-3.0-only
Author: Johannes Waldmann
Maintainer: Johannes Waldmann
Homepage: https://github.com/jwaldmann/haskell-obdd
tested-with: GHC == 9.10.1, GHC == 9.8.2, 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
Library
Build-Depends: base==4.*, random, mtl, containers>=0.5, array, process-extras, ersatz, text
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
Hs-Source-Dirs : examples
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
Type: exitcode-stdio-1.0
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
Type: exitcode-stdio-1.0
Main-Is: Sort.hs
Build-Depends: base, containers, obdd
Ghc-Options: -rtsopts
Default-Language: Haskell2010
test-suite obdd-mm0916
Hs-Source-Dirs : examples
Type: exitcode-stdio-1.0
Main-Is: MM0916.hs
Build-Depends: base, containers, obdd, array
Ghc-Options: -rtsopts
Default-Language: Haskell2010