notas-lc/logo.hs

31 lines
626 B
Haskell

(==>) :: Bool -> Bool -> Bool
x ==> y = (not x) || y
(<=>) :: Bool -> Bool -> Bool
x <=> y = x == y
exists, forall :: (a -> Bool) -> [a] -> Bool
exists p = or.map p
forall p = and . map p
todo, algun :: [a] -> (a -> Bool) -> Bool
todo xs p = forall p xs
algun xs p = exists p xs
val1 :: (Bool -> Bool) -> Bool
val1 bf = (bf True) && (bf False)
val2 :: (Bool -> Bool -> Bool) -> Bool
val2 bf = and [ bf p q | p <- [False, True],
q <- [False, True]]
p = True
q = False
for0 p = p ==> not p
for1 = (not p) && (p==>q) <=> not (q && (not p))
for2 p q = ((not p) && (p ==> q) <=> not (q && (not p)))