31 lines
626 B
Haskell
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)))
|