cudd: Bindings to the CUDD binary decision diagrams library

[ bsd3, data, library ] [ Propose Tags ]

Bindings to version 3.0.0 of the CUDD binary decision diagrams library.

http://vlsi.colorado.edu/~fabio/CUDD/

Installation

Either install CUDD 3.0.0 using your system's package manager or download and install CUDD from here: http://vlsi.colorado.edu/~fabio/.

Then:

"cabal install cudd"

Depending on where CUDD is installed on your system, you may need to provide --extra-lib-dirs or --extra-include-dirs:

"cabal install cudd --extra-lib-dirs=/usr/local/lib"

Usage

This package provides two interfaces to the CUDD library:

  • A purely functional one in Cudd.Cudd that automatically dereferences BDDs during garbage collection.

  • An ST Monad based one in Cudd.Imperative that gives you precise control over the ordering of BDD operations and when BDDs are dereferenced. Use this one if you want your code to perform well.

Also, for a higher level interface in the style of the ersatz SAT encoder, see https://github.com/jwaldmann/cudd-ersatz/.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.3.1, 0.1.0.4
Dependencies array (>=0.4 && <0.6), base (>=4.7 && <5), mtl (>=2.1 && <2.3), transformers (>=0.3 && <0.6) [details]
License BSD-3-Clause
Copyright 2016 Adam Walker
Author Adam Walker
Maintainer adamwalker10@gmail.com
Category Data
Home page https://github.com/adamwalker/haskell_cudd
Bug tracker https://github.com/adamwalker/haskell_cudd/issues
Uploaded by adamwalker at 2017-01-09T05:23:08Z
Distributions
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 4714 total (18 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for cudd-0.1.0.4

[back to package description]

Haskell-CUDD

Haskell bindings to version 3.0.0 of the CUDD binary decision diagram library.

http://vlsi.colorado.edu/~fabio/CUDD/

This package provides two interfaces to the CUDD library:

  • A purely functional one in Cudd.Cudd that automatically dereferences BDDs during garbage collection.
  • An ST Monad based one in Cudd.Imperative that gives you precise control over the ordering of BDD operations and when BDDs are dereferenced. Use this one if you want your code to perform well.

Also, for a higher level interface in the style of the ersatz SAT encoder, see https://github.com/jwaldmann/cudd-ersatz/.

Installation

Either install CUDD 3.0.0 using your system's package manager or download and install CUDD from here: http://vlsi.colorado.edu/~fabio/.

Then:

cabal install cudd

Depending on where CUDD is installed on your system, you may need to provide --extra-lib-dirs or --extra-include-dirs:

cabal install cudd --extra-lib-dirs=/usr/local/lib

Usage

The purely functional interface:

import Cudd.Cudd

main = do
    let manager = cuddInit
        v1      = ithVar manager 0
        v2      = ithVar manager 1
        conj    = bAnd manager v1 v2
        implies = lEq manager conj v1
    print implies

The ST Monad based interface:

import Control.Monad.ST
import Cudd.Imperative

main = do
    res <- stToIO $ withManagerDefaults $ \manager -> do
        v1      <- ithVar manager 0
        v2      <- ithVar manager 1
        conj    <- bAnd manager v1 v2
        implies <- lEq manager conj v1
        deref manager conj
        return implies
    print res