Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Inductive parameter of a inductive definition in Calculus of Inductive Constructions

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Inductive parameter of a inductive definition in Calculus of Inductive Constructions


chronological Thread 
  • From: Tie Cheng <chengtie AT gmail.com>
  • To: Adam Chlipala <adam AT chlipala.net>
  • Cc: Coq-Club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Inductive parameter of a inductive definition in Calculus of Inductive Constructions
  • Date: Fri, 6 May 2011 16:22:37 +0200
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=NR0ilrUF6Up8F1kSP2JKD2xMuttSGuXqnAzFpHxbJWMBtjsM52BvW1j2KFqSyGuwJH FuNjn+qptpagRgPrLDj7+TXk8kF9v8PEmeCNzK35d8oe8iq1VWxI/5YTkWMj9wE5lOqv 6t2/CAAoo1OhU4N9prF7EE+FIHgfxp6oRyKoM=

Dear Chlipala,

Thanks for your reply...

I see that they use "the syntax [A -> B] is sugar for [forall x : A, B], where [x] does not appear free in [B]", so we have

for the first case, r = 1, n = 2, q = 0

C (for [cons]) ≡ (∀ A:Set, A → List A → List A) ≡ ∀ A:Set, ∀ a1:A, ∀ a2:List A, (List A)

where "∀ a1:A, ∀ a2:List A" matches "∀ a1:A1, ∀ a2:A2" of the formula "C≡ ∀ p1:P1,…,∀ pr:Pr,∀ a1:A1, … ∀ an:An, (I p1 … pr t1… tq)", so A is A1, List A is A2 here.

On the other hand, in the previous example in the manual, they mention "Assuming ΓI is [I1:A1;…;Ik:Ak]". As we have [List:Set→Set] as ΓI in this exemple, "Set→Set" should match A1. So here comes the contradiction: I do not see how "Set→Set" could be A or List A via A1 or A2.

Hope my doubt is clearly presented... Thanks and regards

Tie CHENG


On Fri, May 6, 2011 at 2:39 AM, Adam Chlipala <adam AT chlipala.net> wrote:
Tie Cheng wrote:
I do not see how to fill in the "???" part here:

The first case, r = 1 and n = 0:

C (for [cons]) ≡ (∀ A:Set, A → List A → List A) ≡ ∀ A:Set, (List A ???)

I think I see the issue.  Remember that, in Coq, the syntax [A -> B] is sugar for [forall x : A, B], where [x] does not appear free in [B].  The extra arguments that the constructor takes can be considered as [forall]-bound.

In other words, your template above with [???] is, in fact, not a complete description of the possibilities.  My earlier advice was bad, as n should actually be 2 for [cons].  Sorry!




Archive powered by MhonArc 2.6.16.

Top of Page