obdd-0.3.3: 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 -> Int 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) Source # 

Methods

(==) :: Node v i -> Node v i -> Bool #

(/=) :: Node v i -> Node v i -> Bool #

(Ord v, Ord i) => Ord (Node v i) Source # 

Methods

compare :: Node v i -> Node v i -> Ordering #

(<) :: Node v i -> Node v i -> Bool #

(<=) :: Node v i -> Node v i -> Bool #

(>) :: Node v i -> Node v i -> Bool #

(>=) :: Node v i -> Node v i -> Bool #

max :: Node v i -> Node v i -> Node v i #

min :: Node v i -> Node v i -> 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 #