oneColor :: Int -> ROBDDState Int
oneColor statec = foldr1 (.|.) $ map forbid colors
                  where
                  forbid i = singletonC i
                             .&. foldr1 (.&.) [ singletonNotC c | c <- colors, c /= i ]
                  color1 = statec + 0 -- r
                  color2 = statec + 1 -- g
                  color3 = statec + 2 -- b
                  color4 = statec + 3 -- y
                  colors = [ color1, color2, color3, color4 ]

-- | BDD of the USA graph-coloring problem.
oneColor :: Int -> ROBDDState Int
oneColor statec = foldr1 (.|.) $ map forbid colors
                  where
                  forbid i = singletonC i
                             .&. foldr1 (.&.) [ singletonNotC c | c <- colors, c /= i ]
                  color1 = statec + 0 -- r
                  color2 = statec + 1 -- g
                  color3 = statec + 2 -- b
                  color4 = statec + 3 -- y
                  colors = [ color1, color2, color3, color4 ]

-- | BDD of the USA graph-coloring problem.
oneColor statec = foldr1 (.|.) $ map forbid colors
                  where
                  forbid i = singletonC i
                             .&. foldr1 (.&.) [ singletonNotC c | c <- colors, c /= i ]
                  color1 = statec + 0 -- r
                  color2 = statec + 1 -- g
                  color3 = statec + 2 -- b
                  color4 = statec + 3 -- y
                  colors = [ color1, color2, color3, color4 ]

-- | BDD of the USA graph-coloring problem.