Jan Brosius writes:
 > Marcin Kowalczyk wrote at Wed, May 10, 2000 7:54 PM :
 > > > 2. Next let me point out once and for all that
 > > > logical quantifiers are used only in logical formula's .
 > >
 > > Types can be treated as logical formulas, according to the Curry-Howard
 > > isomorphism.
 > 
 > Sorry, never heard of in logic. But perhaps you can explain.

[I hope it is ok if I reply, although I am sure Marcin can defend
himself just as well]

Maybe because you have only learnt about classical logic, which is a
shame especially for a computer scientist. Have a look at a standard
text book, like Troestra & van Dalen's "Intuitionism I,II".

Anyway, in intuitionistic logic it is natural indentify proofs and
programs and proposition and types. Maybe best illustrated by the BHK
(Brouwer-Heyting-Kolmogoroff) semantics:

A proof of a /\ b is a proof of a and a proof of b, hence a /\ b = (a,b)
A proof of a \/ b is a proof of a or a proof of b, hence a /\ b = Either a b
A proof of a -> b is a method to calculate a proof of b from a proof
of a hence a -> b = a -> b
There is no proof of False, hence one would identify False with the
empty type, but as far as I know there is no empty type in Haskell?

As an example how do we prove (a \/ b) /\ c -> (a /\ c) \/ (a /\ b)
in Haskell ?

lem :: (Either a b,c) -> Either (a,c) (b,c)
lem (Left a,c) = Left (a,c)
lem (Right b,c) = Right (b,c)

The disputed forall is just the (2nd order) quantification over all
propositions. 

 > >I see no reason to change the notation of forall in types,
 > > which coresponds to forall in formulas.
 > 
 > This is your claim . I leave it to you to prove it

Seems more an issue of explanation?!

Cheers,
Thorsten

Reply via email to