toysolver-0.7.0: src/ToySolver/Combinatorial/HittingSet/Util.hs
{-# OPTIONS_GHC -Wall #-}
-----------------------------------------------------------------------------
-- |
-- Module : ToySolver.Combinatorial.HittingSet.Util
-- Copyright : (c) Masahiro Sakai 2012-2014
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
-- Portability : portable
--
-----------------------------------------------------------------------------
module ToySolver.Combinatorial.HittingSet.Util
( maintainNoSupersets
) where
import Data.IntSet (IntSet)
import qualified Data.IntSet as IntSet
maintainNoSupersets :: [IntSet] -> [IntSet]
maintainNoSupersets xss = go [] xss
where
go yss [] = yss
go yss (xs:xss) = go (xs : filter p yss) (filter p xss)
where
p zs = not (xs `IntSet.isSubsetOf` zs)