Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Parametricity

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Parametricity


chronological Thread 
  • From: Daniel Schepler <dschepler AT gmail.com>
  • To: coq-club AT inria.fr
  • Cc: David Baelde <david.baelde AT gmail.com>
  • Subject: Re: [Coq-Club] Parametricity
  • Date: Wed, 30 Mar 2011 10:30:48 -0700
  • 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=wl514PrBVlHgBo9NsLNXPnjZP5r8RMM7Aap+VZC0ZRiSTvMLbitcJi3m8I6U36NpQz 2EmQPxJaXlJGijd9VgsAhrew4IIojld4HGD1VwWHM2tKSG5qK9QACAkNZiwRI89oJrdf n4NdUTb1Lmyrq6GOB2UobyDBHdM51PHXD2JpQ=

On Wednesday 30 March 2011 07:13:22 David Baelde wrote:
> Hi list,
> 
> We (at ProVal) were wondering to which extent Coq is tied to
> parametric polymorphism.
> 
> There is certainly no way to define a non-parametric function in Coq.
> For example, any function of type (forall A:Type, A -> bool) must be
> equal (at least extensively) to a constant function. It also seems
> that there is no model of (subsets) of the CIC that doesn't force
> parametricity. But do we know whether this is ruled out by the
> calculus itself? In other words, can we prove from inside Coq that any
> function of type (forall A:Type, A -> bool) is extensively equal to
> some constant function?
> 
> Any pointers related to that topic would be appreciated.
> 
> Thanks,

No, if you add

Axiom classic_dec: forall P:Prop, {P} + {~P}.

then you can define

Definition inhabited_bool (A:Type) : bool :=
  if classic_dec (inhabited A) then true else false.

That's clearly not constant, but classic_dec is consistent (in fact, it's 
easy 
to prove from classic and constructive_definite_description).
-- 
Daniel Schepler



Archive powered by MhonArc 2.6.16.

Top of Page