Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Positivity and Elimination Principle

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Positivity and Elimination Principle


chronological Thread 
  • From: Daniel Schepler <dschepler AT gmail.com>
  • To: Dan Doel <dan.doel AT gmail.com>, coq-club AT inria.fr
  • Cc: Andreas Abel <andreas.abel AT ifi.lmu.de>, Adam Chlipala <adamc AT csail.mit.edu>, AUGER C�dric <Cedric.Auger AT lri.fr>
  • Subject: Re: [Coq-Club] Positivity and Elimination Principle
  • Date: Fri, 20 Jan 2012 13:07:04 -0800

On Fri, Jan 20, 2012 at 11:43 AM, Dan Doel <dan.doel AT gmail.com> wrote:
I think the main reason positive-but-not-strictly types are rejected
is that they aren't set theoretic in general. That is, you can
construct types such that:

   T ~ (T -> 2) -> 2

but there is no such set. So if you're committed to your models being
set theoretic, you can't have such types (this is, I think, the
same/similar observation as Reynolds' original paper on models of
polymorphic type theory in sets).

Replace 2 with Prop, and the existence of such a type T is inconsistent.  First, no function f : P(T) -> T can be injective, by the following variation of Cantor diagonalization: consider S0 = { f(S) : ~(f(S) in S) } = { t:T | exists S:P(T), f(S) = t /\ ~ (t in S) }.  Then f(S0) in S0 -> exists S, f(S) = f(S0) /\ ~ (f(S0) in S).  By the injectivity of f, this implies a contradiction ~(f(S0) in S0); so overall, we know ~(f(S0) in S0).  But then f(S0) in S0 because f(S0) = f(S0) /\ ~ (f(S0) in S0).  So the assumption that f is injective leads to a contradiction.

Now if we have an injective map ((T -> Prop) -> Prop) -> T, which must exist if T ~ (T -> Prop) -> Prop, then @eq (T -> Prop) : (T -> Prop) -> ((T -> Prop) -> Prop) is also injective; so the composition : (T -> Prop) -> T is injective, contradicting the previous paragraph.
--
Daniel Schepler




Archive powered by MhonArc 2.6.16.

Top of Page