module Satchmo.Boolean.Op where ... and :: [ Boolean ] -> SAT Boolean and xs = do y <- boolean -- die Hilfsvariable -- lt. Tseitin-Transform sequence $ do x <- xs ; return $ assert [ not y, x ] assert $ y : map not xs return y