Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Trouble with dependent induction

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Trouble with dependent induction


Chronological Thread 
  • From: Matěj Grabovský <matej.grabovsky AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] Trouble with dependent induction
  • Date: Sun, 17 Dec 2017 12:34:36 +0100
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=matej.grabovsky AT gmail.com; spf=Pass smtp.mailfrom=matej.grabovsky AT gmail.com; spf=None smtp.helo=postmaster AT mail-lf0-f48.google.com
  • Ironport-phdr: 9a23:inLWqxOqGbp0T/3N/Uol6mtUPXoX/o7sNwtQ0KIMzox0Lfr6rarrMEGX3/hxlliBBdydt6odzbKO+4nbGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1Ov71GonPhMiryuy+4ZLebxlViDanfb9+MAi9oBnMuMURnYZsMLs6xAHTontPdeRWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjTbxFFzsmKHw65NfqtRbYUwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0yRD+s7bpkSAXwhSkHOTA383zZhNJsg6xUux+huwV/zpTIbI2JKPZzfKXQds4aS2pbWcZRUjRMDISmYIsTEe8BP/tToYjnp1QUthS+AhesBPjsyidVm3T72qg63P49EQ7Y3gwsBd0OsG7Oo9ruM6cST/u1zKrIzDjYYPNW3C3y6InMchw7vf6MWrdwfNPXxEIyGQ3FiVCQppbkPzOTzukNt3Cb4PB7VeKzlWErsQdxrSazxsoql4LHhZoVx0ja+SllxIs5P961RU5hbdK6DZddtzuWOoR1T84kXmpmojw1yqcctp6+ZCUKyIooxxrYa/GfdoiH+BPjVOKILTd8inJpZKuzhxi9/EWj0OH8Wc600FFFripBjNbArGwC1xvW6sSfS/t9+Fmu2SqX2gzN9u1JJVo4mKnbJpI73LI8i5oevV7MEyL1gEn2ibWZdkQg+uim8eTnZbDmq4eZN4BulgHxLKYultawAeQiKAcBRG+b+fqn1L3g/Uz0W7pKjvgsnanYtJDWP9gUpqm8AwNNyIYs9w6/Dyu60NQfhXQIMFVFeAueg4f1P1HOPev3AOykg1WslTdr3+rJMqfgApXLNHjDka3ucaxz605Gm0IPyoVU4IsRAbUcKtryXFXwvZrWFEwXKQuxlsPuFHZ/nqwEUGiIHLSapeuGtFaU6+BpLPOFbogLozXsA/cg7v/qy3Q+nAlOLuGSwZILZSXgTbxdKEKDbC+0jw==

Hello.

I'm trying to prove the following, apparently simple statement about
the Vector.replace function from the standard library (the full code
is at http://lpaste.net/360859):

forall {A n} (xs : Vector.t A n) i x, (Vector.replace xs i x)[@i] = x

Although I can prove this just fine using Program, I'd also like to
perform the proof without it, without assuming additional axioms.
However, I can't quite wrap my head around what's going on with all
the type dependencies.

I can destruct the with an intricate matching trick, but I'm unable to
proceed in the latter branch as I need more information for the proof
to progress.

What is the Coq canonical/recommended approach to dependent induction
without on inductives indexed by types with decidable equality? Is
there a general approach to this? If not, how would I go about this in
the Vector case?

Note that I'm not looking for alternatives to stdlib Vector or
specialised libraries as of now. I'd very much like to understand the
concept in vanilla Coq first.

Best regards,

Matěj



Archive powered by MHonArc 2.6.18.

Top of Page