obdd-0.3.2: Ordered Reduced Binary Decision Diagrams

Safe HaskellNone
LanguageHaskell98

OBDD.Data

Contents

Description

implementation of reduced ordered binary decision diagrams.

Synopsis

the data type

data OBDD v Source

assumes total ordering on variables

size :: OBDD v -> Index Source

for external use

null :: OBDD v -> Bool Source

does the OBDD not have any models?

satisfiable :: OBDD v -> Bool Source

does the OBDD have any models?

number_of_models :: Ord v => Set v -> OBDD v -> Integer Source

Number of satisfying assignments with given set of variables. The set of variables must be given since the current OBDD may not contain all variables that were used to construct it, since some nodes may have been removed because they had identical children.

some_model :: Ord v => OBDD v -> IO (Maybe (Map v Bool)) Source

randomly select one model, if possible

all_models :: Ord v => OBDD v -> [Map v Bool] Source

list of all models (WARNING not using variables that had been deleted)

fold :: Ord v => (Bool -> a) -> (v -> a -> a -> a) -> OBDD v -> a Source

foldM :: (Monad m, Ord v) => (Bool -> m a) -> (v -> a -> a -> m a) -> OBDD v -> m a Source

toDot :: Show v => OBDD v -> String Source

toDot outputs a string in format suitable for input to the "dot" program from the graphviz suite.

for internal use

data Node v i Source

Constructors

Leaf !Bool 
Branch !v !i !i 

Instances

(Eq v, Eq i) => Eq (Node v i) 
(Ord v, Ord i) => Ord (Node v i) 

make :: State (OBDD v) Index -> OBDD v Source

register :: Ord v => Node v Index -> State (OBDD v) Index Source

checked_register :: Ord v => Node v Index -> State (OBDD v) Index Source

cached :: Ord v => (Index, Index) -> State (OBDD v) Index -> State (OBDD v) Index Source

top :: OBDD v -> Index Source

access :: OBDD v -> Node v (OBDD v) Source