data L = A | B | C deriving Eq r :: L -> L -> Bool r A A = True r B B = True r C C = True r A B = True r B A = True r B C = True r C B = True r _ _ = False (==>) :: Bool -> Bool -> Bool True ==> True = True True ==> False = False False ==> True = True False ==> False = True forany :: (L -> Bool) -> Bool -- Ax R(x) forany r = (r A) && (r B) && (r C) exists :: (L -> Bool) -> Bool exists r = (r A) || (r B) || (r C) checkref = forany (\x -> r x x) checksim = forany (\x -> forany (\y -> ( r x y ==> r y x ) )) {- Построить отношение рефлексивное, симметричное, нетранзитивное (на конечном множестве). Сделать проверку (осталось для транзитивности). c x x b x x x a x x a b c -}