Skip to Content.
Sympa Menu

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

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

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


Chronological Thread 
  • From: "jonikelee AT gmail.com" <jonikelee AT gmail.com>
  • To: Emilio Jesús Gallego Arias <e AT x80.org>
  • Cc: coq-club AT inria.fr, Agnishom Chattopadhyay <agnishom AT cmi.ac.in>
  • Subject: Re: [Coq-Club] How can I extract data from this exists Prop?
  • Date: Tue, 25 Aug 2020 14:27:11 -0400
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jonikelee AT gmail.com; spf=Pass smtp.mailfrom=jonikelee AT gmail.com; spf=None smtp.helo=postmaster AT mail-qk1-f177.google.com
  • Ironport-phdr: 9a23:gGRfsRDrbpA9etS/jJxGUyQJP3N1i/DPJgcQr6AfoPdwSPX9ocbcNUDSrc9gkEXOFd2Cra4d1ayP6firADRZqb+681k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba5zIRmssAndqNUajYR/Jqot1xfCv2dFdflRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P286+MPkux/DTRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VDG/5KplVBPklCEKPCMi/WrJlsJ/kr5UoBO5pxx+3YHUZp2VNOFjda/ZZN8WWHZNUtpUWyFHH4iybZYAD/AZMOhWr4fzuUYAoxi8CgmiA+3gxSNHiHDt0K0myuQsHx3K0RY8E98MtnnfsdX7NL0VUeCw1KTEwzfDb/RQ2Tf864jHbBQhru+SUr9rfsrRzFMgFwLBjlmKtYPlODaV2uoQuGWc7epgUuSvi28kqw5vpjig2Nkjh5LGhoIQ0F/E9CF5zJwpKt2/TU52eNipG4ZfuC+GLYV5WN8iQ312tyYgzL0LoZ+2cDYExZkj2xLSZP6Kf5aI7x/gSOucLzd2iGxrdr+8hhu/7FWtx+7iW8S631tGsipLn9vDu3wT2BHd5dSKR/l780y82jiPzxje5v9YLU0wj6bWKJ4szqQumpYNr0jPBDL6lUf0gaOOaEkp+/Sk5/nib7n7opKTK4p5hw7/P6gyhsCyBPk0PRQPUmWe4uux16Hs8lD8TbpRgfA2nKfZvZXUJcsFu6G2HgpY34Yt6xmjFTir1skTk2MdI1JfYh2HipDkO1HQL/D8Cveym1Gsny1qx/DCJ7HhG5bNImXanLfvYLpw6UxRxBA8zdBY4JJUBbUBL+zpVkDts9zYCwc1Mw2yw+n5FNVwzp0SVX6LD6ODM67fsUWE6vwxL+WSfoMZpTTwJvo96/7rl3A5mFsdfaez3ZsQbXC1BvZmI0KfYXrtgdcOD2MKsRQgQ+Hxh12CVCRcZ3e2X64m+j47D4emAZ/ZRo+xmLyBwDu7HppOa29aDVCMCG7keJmAW/cRcy2fOdRhkzwBVbi5UYAtzxCutAngy7pmNOXY4CMYtYiwnORyssDWlBUz8nRWAt8PyCmiRmVwk2wPDxYs3alk6Rhw4kfTie5/mfMORvJJ4PYcGAU9M5/fwuh3Bvj9XwvAepGCT1PsCoGkBjcwTd81ztImbEN0GtHkhRfGiXn5S4QJnqCGUcRnupnX2GL8coMkky6fhfsRymI+S84KDlWIw6t29gzdHYnMyhzLmKOjdKBa1ynIpj7akDi++XpAWQs1ap3rGHASYkyM84b870LGCqatUPEpa1Qej8GFLaROZ5viilAUHK6/auSbWHq4niKLPTjN3qmFNdO4dGAU3SGbA08BwVge

Can someone explain to a non-ssreflect/non-mathcomp user how choiceType
works? It looks like it must rely on an axiom. Are there any types
that fulfill it? For example, is there a non-axiomatic way in which
bool is a choiceType?

Because, the ability to pull the necessary x out of "exists x, P x"
seems magical. How would a program using this extract?

On Tue, 25 Aug 2020 19:15:14 +0200
Emilio Jesús Gallego Arias <e AT x80.org> wrote:

> Hi Agnishom,
>
> Agnishom Chattopadhyay <agnishom AT cmi.ac.in> writes:
>
> > 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.
>
> If you can afford to work with a type A which has a notion of choice
> principle you can indeed write your witness function. Example:
>
> From mathcomp Require Import all_ssreflect.
>
> Set Implicit Arguments.
> Unset Strict Implicit.
> Unset Printing Implicit Defensive.
>
> Variable (A : choiceType).
>
> Definition isPrefixOf (x : list A) (y : list A) :=
> exists z, x ++ z == y.
>
> Definition extract x y (w : isPrefixOf x y) : list A := xchoose w.
>
> Kind regards,
> Emilio




Archive powered by MHonArc 2.6.19+.

Top of Page