Доказать, используя Хаскель, что следующие тавтологии верны интуиционистски
(a -> c) /\ (b -> c) -> a \/ b -> c
(a \/ b -> c) -> (a -> c) /\ (b -> c)
(Понятно, что конъюнкция - это пара, а дизъюнкция - Either.)
UPD. Стоит напомнить, что изоморфизм Карри-Говарда имеет место между интуиционистской версией пропозициональной логики и подмножеством
(
Read more... )
Comments 13
Reply
Reply
Reply
Reply
ex1 :: (a -> c, b -> c) -> Either a b -> c
ex1 (f,g) = h where
h (Left l) = f l
h (Right r) = g r
Reply
ex2 :: (Either a b -> c) -> (a -> c, b -> c)
ex2 h = (h . Left, h . Right)
Reply
uncurry (|||)
2.
(. Left) &&& (. Right)
Reply
Reply
import Control.Arrow
f :: (a->c, b->c) -> Either a b -> c
f = uncurry (|||)
g :: (Either a b -> c) -> (a->c, b->c)
g = (.Left) &&& (.Right)
Reply
Reply
Leave a comment