>>591
こんなのでどうかな。
題意を理解していないので間違ってたらスマソ
import List

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x, y) s
  | x == y = True
  | y `elem` ns = True
  | otherwise = any con ns
  where
    ns = map snd $ filter ((==x) . fst)  exts
    exts = s ++ map (uncurry $ flip (,)) s
    con n = inEqvCl (n, y) (s\\[(x, n), (n, x)])