[TYPES] Question about the polymorphic lambda calculus
Herman Geuvers
herman at cs.ru.nl
Fri Jun 6 08:58:31 EDT 2008
Samuel E. Moelius III wrote:
> [ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ]
>
> Suppose that T is a type with exactly one free variable X. Further
> suppose that for every closed type U, there is some term with type
> T[U/X]. Then, does there necessarily exist some term with type (forall
> X. T)?
>
> In other words, in the situation described above, can the meta-level
> ``forall'' be pushed down into the types?
>
> If this is a theorem, could someone please point me to a proof of it?
>
> Thanks in advance.
>
> Sam Moelius
>
>
Dear Sam,
If I look at your question in the polymorphic lambda calculus (system
F), then it is basically a question about derivability in second order
proposition logic PROP2:
Does the following hold?
If |- Phi(U) for every closed proposition U, then |- forall X Phi(X)
PROP2 is constructive proposition logic: only implication -> and a
second order quantifier over propositions.
Now, in the classical case, your conjecture holds, because then, if |-
Phi(U) for every closed proposition U, then
|- Phi(top) and |- Phi(bot) and so |- forall X. Phi(X).
(In classical PROP2, let's call it CPROP2, we have an axiom forall X.(X
\/ ~X); bot is forall X.X and
top is forall X. X->X. The definition of the connectives is just the
usual one from PROP2.)
That |- Phi(top) and |- Phi(bot) imply |- forall X. Phi(X) is because we
have a complete truth table semantics for CPROP2. I have spelled that
out in detail in my PhD thesis in 1993.
Now, can we conclude anything from this for PROP2?
Yes, because there is a G"odel not-not translation from CPROP2 to PROP2.
One can take the one from Coquand-Herbelin (called "A-translation" in
their paper) or the "standard one" in the book of Van Dalen (Logic and
Structure):
Coquand-Herbelin:
X* := X
(A->B)* := ~~A* -> ~~B*
(forall X.A)* := forall X. ~~A*
van Dalen:
X* := ~~X
(A->B)* := A* -> B*
(forall X.A)* := forall X. A*
For the first one, we have
Gamma |-_{CPROP2} phi <=> ~~(Gamma*) |- _{PROP2} ~~(phi*)
For the second one, we have
Gamma |-_{CPROP2} phi <=> Gamma* |- _{PROP2} phi*
So if we consider the van Dalen translation, we can derive that for
formulas of the form Phi(X)*, we have (in PROP2):
If |- Phi(U)* for every closed proposition U, then |- forall X.
Phi(X)*
Proof: If |-_{PROP2} Phi(U)* for every closed proposition U, then
|-_{PROP2} Phi(top)*
and |-_{PROP2} Phi(bot)*, so |-_{CPROP2} Phi(top) and |-_{CPROP2}
Phi(bot), so |-_{CPROP2} forall X. Phi(X),
so |-_{PROP2} forall X. Phi(X)*.
I have no idea to which extent this extends to the general case.
Best Regards
Herman Geuvers
References:
========
My PhD thesis:
J.H. Geuvers, Logics and Type systems
<http://www.cs.ru.nl/%7Eherman/PUBS/Proefschrift.ps.gz>, PhD. Thesis,
University of Nijmegen, September 1993.
http://www.cs.ru.nl/~herman/PUBS/Proefschrift.ps.gz
Thierry Coquand, Hugo Herbelin
A-translation and Looping Combinators in Pure Type Systems, 1994,
Journal of Functional Programming
Dirk van Dalen
Logic and Structure (3rd extended ed.). Springer Verlag, Berlin.
More information about the Types-list
mailing list