-- | Reduced ordered binary decision diagrams,
-- pure Haskell implementation.
-- (c) Johannes Waldmann, 2008 - 2016
--
-- This module is intended to be imported qualified
-- because it overloads some Prelude names.

module OBDD 

( module OBDD.Data
, module OBDD.Property
, module OBDD.Operation
, module OBDD.Display
, module OBDD.Make
) 

where

import OBDD.Data ( OBDD , size
                 , null, satisfiable
                 , number_of_models
                 , variables, paths, models
                 , some_model
                 , fold, foldM
                 , full_fold, full_foldM
                 )
import OBDD.Property
import OBDD.Operation
import OBDD.Display
import OBDD.Make

import Prelude hiding (not, null)

instance Ord v => Eq (OBDD v) where
  OBDD v
f == :: OBDD v -> OBDD v -> Bool
== OBDD v
g = OBDD v -> Bool
forall v. OBDD v -> Bool
null (OBDD v -> Bool) -> OBDD v -> Bool
forall a b. (a -> b) -> a -> b
$ OBDD v -> OBDD v
forall b. Boolean b => b -> b
not (OBDD v -> OBDD v) -> OBDD v -> OBDD v
forall a b. (a -> b) -> a -> b
$ OBDD v -> OBDD v -> OBDD v
forall v. Ord v => OBDD v -> OBDD v -> OBDD v
equiv OBDD v
f OBDD v
g