Haskell bindings for CacBDD, a Binary Decision Diagram (BDD) package with dynamic cache management.
Original C++ code from http://kailesu.net/CacBDD and a C wrapper are included.
-
Install C compilers and stack if necessary:
apt install build-essential git curl -sSL https://get.haskellstack.org/ | sh
-
Download, build and load the lastest version:
git clone https://github.com/m4lvin/HasCacBDD.git cd HasCacBDD stack setup stack build stack exec ghci
Note:
stack ghci
apparently does not work with the shared library. You really needstack build
and thenstack exec ghci
.To use cabal instead of stack:
cabal build
, thencabal exec ghci
and then:set -package HasCacBDD
. -
Now you can play with Boolean functions :-)
λ> import Data.HasCacBDD λ> var 5 Var 5 Top Bot λ> neg (var 5) Var 5 Bot Top λ> dis (neg (var 3)) (var 3) Top
For further documentation, see https://hackage.haskell.org/package/HasCacBDD/docs/Data-HasCacBDD.html