-- given: AND_1 = {c_1, ..., c_i}, AND_2 = {d_1, ..., d_j}
-- AND_1 \sqsubseteq AND_2 iff \forall d_n \in AND_2 \exists c_m \in AND_1 s.t. c_m \sqsubseteq d_n
findSubsumed (And cs) d =
  let dAnds = filter (\x -> case x of And _ -> True
                                      _ -> False) d
  in find (\(And d_n) -> all isJust $ map (`findSubsumed` d_n) cs) dAnds
findSubsumed (And cs) d =
  let dAnds = filter (\x -> case x of And _ -> True
                                      _ -> False) d
  in find (\(And d_n) -> all isJust $ map (`findSubsumed` d_n) cs) dAnds
findSubsumed (And cs) d =
  let dAnds = filter (\x -> case x of And _ -> True
                                      _ -> False) d
  in find (\(And d_n) -> all isJust $ map (`findSubsumed` d_n) cs) dAnds