and :: (a, b) -> Bool -> Bool -> Bool and (a, b) False False = _w0 and (a, b) False True = _w1 and (a, b) True False = _w2 and (a, b) True True = _w3