-- | builds basic OBDDs

module OBDD.Make 

( constant, unit )

where

import OBDD.Data

import Data.Map ( Map )
import qualified Data.Map as M

constant :: Ord v => Bool -> OBDD v
constant b = make $ do
    register $ Leaf b

-- | Variable with given parity
unit :: Ord v => v -> Bool -> OBDD v
unit v p = make $ do
    l <- register $ Leaf $ not p
    r <- register $ Leaf $     p
    register $ Branch v l r