Question aboutthe use of an inner forall
Alastair Reid
alastair@reid-consulting-uk.ltd.uk
19 Aug 2002 12:55:27 +0100
Ashley's comparision of types and logic misses out one important
point of comparision:
types logic
value/expression of type T proof of logical statement T
For example, consider a statement like:
A /\ B => A
The corresponding type is
forall a,b. (a,b) -> a
or, in English,
for any a and b you choose,
given a pair of an a and a b,
I will give you an a.
Now think of a and b as being proofs of a and b:
for any propositions a and b you choose,
given a pair of a proof of a and a proof of b,
I will give you a proof of a.
In other words, a function with type 'forall a,b. (a,b) -> a'
can be used to construct a proof of A given a proof of A /\ B.
This correspondance is known as the Curry-Howard Isomorphism. You can
read a lot more about it on Phil Wadler's web page and you can read
about how it applies specifically to runST on John Launchbury and
Simon Peyton Jones' web pages.
http://www.research.avayalabs.com/user/wadler/
http://www.cse.ogi.edu/~jl/
http://research.microsoft.com/Users/simonpj/
--
Alastair Reid alastair@reid-consulting-uk.ltd.uk
Reid Consulting (UK) Limited http://www.reid-consulting-uk.ltd.uk/alastair/
Scott J. wrote:
>> So let's come backe to runST.
>>
>> runST ::( forall s) (ST s a )-> a
>>
>> So I insist what is the statement ST s a ?
Ashley Yakeley <ashley@semantic.org> writes:
> Oh it's not really a statement, it just plays a similar role in
> types that statements play in logic. The comparison runs something
> like this:
> type variable variable
> type statement
> type constructor function
> "->" implies
> application derivation
> "forall" universal quantification
> type specialisation specialisation
> For instance, in logic if you have "A" and you have "A implies B",
> you can derive "B". Likewise, if you have a value of type "a", and a
> value of type "a -> b", by using function application you can obtain
> a value of type "b".
> The type theory has the same structure as the logic, merely a
> different interpretation.