[TYPES] The "omega rule" in polymorphic lambda calculus
Andrew Polonsky
andrew.polonsky at gmail.com
Sun Aug 17 18:13:56 EDT 2025
Hi all,
The following question was posed by Samuel E. Moelius III to the TYPES list
on Jun 3, 2008. [1]
> 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)?
The question was not fully answered at the time, but it occurs to me that a
remark by Herman Geuvers later in the thread [2] leads to a simple
counterexample.
Bot = forall X. X
~A = A -> Bot
A \/ B = forall X. (A -> X) -> (B -> X) -> X
EM = forall X. X \/ ~X
Put T(X) = (EM -> X) \/ (EM -> ~X)
Let A be a closed type.
Then classically, A is either equivalent to Bot or to Top = Bot -> Bot.
In either case, T(A) is provable by the appropriate injection.
However, this choice cannot be made without having EM in the context
already.
Therefore, the type (forall X. T(X)) is not inhabited.
More precisely, any normal closed inhabitant of the above type would have
the form
/\X /\Y \f : (EM -> X) -> Y \g : (EM -> ~X) -> Y). t
where t=t(X,Y,f,g) : Y.
In turn, the term t would have to begin with an application of either f or
g. Either choice is refuted by an appropriate instance of X.
Cheers,
Andrew
[1] https://lists.seas.upenn.edu/pipermail/types-list/2008/001240.html
[2] https://lists.seas.upenn.edu/pipermail/types-list/2008/001247.html
More information about the Types-list
mailing list