Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Set, Prop, Type

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Set, Prop, Type


chronological Thread 
  • From: Dan Doel <dan.doel AT gmail.com>
  • To: Adam Chlipala <adamc AT hcoop.net>
  • Cc: Jeffrey Harris <janglernpl AT gmail.com>, coq-club AT pauillac.inria.fr
  • Subject: Re: [Coq-Club] Set, Prop, Type
  • Date: Wed, 16 Sep 2009 17:48:22 -0400
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; b=pJu1LwVQHC5POJHuv4z6OjjSUrFJgL1eSIJkXyh+9KVI1zvjvYUQfMvDVXTcEvAdIQ 6kmSaP4QPvIsn+YkEjd57F7M91Uhha9jxtNsrj3g6WUHElg2nvkLZSiC2nPgqxTZfU6o q1h7i6lWsp0Ho0iBvic2OuxPdisksmr45AkIY=
  • List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>

On Wednesday 16 September 2009 11:13:01 am Adam Chlipala wrote: 
> The important difference of [Prop] vs. [Type] is that [Prop] is
> impredicative: you may define a [Prop] by quantifying over all [Prop]s.
> This is a natural thing to do, even in basic theorems about
> "propositional" logic, like this:
>     forall P : Prop, P -> ~~P
> This statement is itself a [Prop].  If you used [Type] instead of [Prop]
> everywhere (both in this statement and in the standard library), then
> the statement would exist at a higher universe level than the universe
> it quantifies over, so it wouldn't apply to itself.
> 
> To me, this justification is separate from the extraction restrictions
> that you asked about.  I think [Prop] (as opposed to impredicative
> [Set]) exists solely to enable extraction of efficient programs, so
> there's not so much detective work required about its justification as
> your question suggests.  Impredicativity in a type without [Prop]'s
> restrictions _is_ inconsistent with some popular classical axioms, so
> there's another reason.
>
> I think I've heard that Agda is purely predicative, but I might be wrong.

It is. However, one can pass a flag (--type-in-type) to make Set : Set, which 
would get you impredicativity as a corollary, I think, although Set : Set is 
stronger. With the latter you're able to construct analogues to Russel's 
paradox which let you prove false via non-termination:

  http://sneezy.cs.nott.ac.uk/darcs/Agda/test/succeed/Hurkens.agda

Obviously Prop isn't subject to this, as it'd be pretty useless if you could 
prove false propositions. However, it may be (though I'm not sure) that the 
non-computational aspect of Prop is what prevents one from being able to 
construct such pathological cases, despite being able to quantify over 
arbitrary higher universe levels. Someone with more knowledge than I have 
will 
have to say whether that's true or not, though.

-- Dan





Archive powered by MhonArc 2.6.16.

Top of Page