Skip to Content.
Sympa Menu

coq-club - [Coq-Club] How can I extract data from this exists Prop?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] How can I extract data from this exists Prop?


Chronological Thread 
  • From: Agnishom Chattopadhyay <agnishom AT cmi.ac.in>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] How can I extract data from this exists Prop?
  • Date: Sun, 9 Aug 2020 22:55:58 -0500
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=agnishom AT cmi.ac.in; spf=Pass smtp.mailfrom=agnishom AT cmi.ac.in; spf=None smtp.helo=postmaster AT mail.cmi.ac.in
  • Ironport-phdr: 9a23:kp4zlh/QgKhcWf9uRHKM819IXTAuvvDOBiVQ1KB30eocTK2v8tzYMVDF4r011RmVBNudu60P1LeempujcFRI2YyGvnEGfc4EfD4+ouJSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgppPOT1HZPZg9iq2+yo9JDffgRFiCC+bL5wIxm7rwXcvdQKjIV/Lao81gHHqWZSdeRMwmNoK1OTnxLi6cq14ZVu7Sdete8/+sBZSan1cLg2QrJeDDQ9LmA6/9brugXZTQuO/XQTTGMbmQdVDgff7RH6WpDxsjbmtud4xSKXM9H6QawyVD+/6apgVR3mhzodNzMh/27ZisJ+gqFGrhy/uxNy2JTbbJ2POfdkYq/RYdEXSGxcVchRTSxBBYa8YpMTAuoOO+ZYrpL9p1sJrRu7GAKhGuPvxSVUhn/q2q06y/4uHhzG3A0gBd0PsGnfodLvO6cdV+C1zbLIzTXEb/NTwjry9I3IchE7rf6WQb18a8vRyU82Gg7Dk16fppDrMSmP2eQRr2iU8fBgVeS3hmAptQ19vzeiy9swhofGmI8Z11/K+CplzIsxJdC1SFB3bMO6HJdMqyyXM4V4T8EsTmx0uys3yaAKtJ+5cSUEzJkqwQPUZf+fc4WQ/x7vSuicLS15iX9rYr6zmQq+/Ea6xuHiS8W4zk5GojRZntTIrHwA1Bze5tKaRvZ8/0qtwzmC2x7V5+pZO047j7DbJIQkwrMolpocr0DDHijulUXzlqCWd0Ek9vK05OTiY7XqvIWTOJNuhgH/NKQigs2/AeImPQgSR2WX5Pqw2bP58UD4TrhGlOM6nrXXvZzAO8gXu7C1DxdQ0ok56ha/Czmm0M4fnXkCNF9KYh2Hj47oO1HVIPD4CvK/jk+wnzduxvDKJKfuDYnXInjClrftZax95FJEyAov0dBf4IpZBa0GIPLqQ0P+qNjYDgIiPAGv2ObmCNB91psEVm6VA6+ZNrnSsV6S6e41LemMftxdhDGoIP88ovXqkHURmFkHfKDv04FERmq/G6FPLEOYenrrh58qEW4Wog0mReDqmVSTGWpaaHCzRKI74xkwDYPgBIyFR4b70+/J5zuyApADPjMOMVuLC3q9L9zYCcdJUzqbJ4paqhJBTaKoEtZz3hSv8gbxjbthfLKNp38o8Kn73d0w3NX90BE/8TstUZaY2mCJCWpxnyUBTHk32vIn+B0v+hK4yaF9xsdgO5lW7vJNXB09MMeFned/Cpb7UUTAeIXQRQ==

I have a function that is something like this:

 Definition isPrefixOf (x : list A) (y : list A) :=
     exists z, x ++ z = y.

Now, I want to define a witness function. Informally, it can be described as follows: Given x and y such that (isPrefixOf x y), return z which satisfies the criteria exists z, x ++ z = y.

I would try to define it this way, but that would not work (possibly because exists z, x ++ z = y is a Prop and we are asking for something in Type) :

Definition witness (x y : list A) {H : isPrefixOf x y} : list A.
    destruct H.
Abort.

Another option seems to be to define

Definition isPrefixOf (x y : list A) :=
    sig (fun z => x ++ z = y).

But I do not like this because this does not let me define things like Instance isPrefixOf_PreOrder : PreOrder isPrefixOf.

So, how can I have my cake and eat it too?



Archive powered by MHonArc 2.6.19+.

Top of Page