coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Pierre Courtieu <pierre.courtieu AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Qed opacity and Coq standard library
- Date: Fri, 23 Apr 2021 11:15:16 +0200
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=pierre.courtieu AT gmail.com; spf=Pass smtp.mailfrom=pierre.courtieu AT gmail.com; spf=None smtp.helo=postmaster AT mail-io1-f54.google.com
- Ironport-hdrordr: A9a23:A7/1W6/15l7MSqTouNNuk+GIdb1zdoIgy1knxilNYDZSddGVkN3rufwd2wP9hjp5YgBFpfmrPq6cTXTAsaNk+IV5B8bBYCDKsHalRbsC0aLM2DvlcheVysd80uNaf7F6GJnMCzFB4vrSxCmdP5IezMKc8Kau7N2urEtFaQ1xcalv40NYJ2+gcnFefwVNCZonGJf03KMuzAaIQngZYt+2AXMIRYH4y+Hjro7sYhINGncchjWmsDXA0tPHOind+h8fVj9VqI1SlFTtokjB/aO9u/+gjj/wvlWjiah+qZ/a09NGQOOIgsZ9EESUti+YILhAH5ufoXQboOSz5E0wnMPRpgo7Vv4Dk0/5Y2CvrRPhnwnm3To+gkWSrmOlvQ==
- Ironport-phdr: A9a23:udsU7h8K9NnJc/9uWVS7ngc9DhMPi/DPJgcQr6AfoPdwSMyLwZ3uMQTl6Ol3ixeRBMOHsqMC0bOM+Pm5EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCe5bL9oMhm6sBvdusYLjYd/N6081gbHrnxUdupM2GhmP0iTnxHy5sex+J5s7SFdsO8/+sBDTKv3Yb02QaRXAzo6PW814tbrtQTYQguU+nQcSGQWnQFWDAXD8Rr3Q43+sir+tup6xSmaIcj7Rq06VDi+86tmTgLjhSEaPDA77W7XkNR9g61VoB2jpxJxzY3abpyLOvViZa7SZ88WSHBbU8pNSyBMAIWxZJYPAeobOuZYqpHwqUEPrRSgHwmsHv3gwSJWi3/xwK06yfghEQDY0ww9AtkDt2zUrNTrO6cIS+C60rPEwinEb/NLwzf99InIfQ48ofyXUrJwdNDeyUgrFw/fklqQronlMiqT2+8QvGeV8/BuWvizi247tQ5xuD6vy98xhoTViI8Yy03J+CZ2zos3KtO1SEF1bNylHZZetCyUN4t7T94/Tmx1uCs3xaELtJq4cSQX1pkqxADTZuKEfoWU5B/oSeifITB9hH1/ebK/gQ6/8Uehyu3gVsm0zU1FojBZndnLs3ABzx3T6s6dSvt85EitwziP1xrL5uFBIEA0ibDXJIA8zb4tjpYTtEXDHjPslEnskqCZa1gk9+614OrkerXrvoGQO5Nwhw3kMakjmtazDfk5PwUPRWSW+eux2bv+9kPjWrpKlOc5kqzBvZDaO8sboqm5DhdQ0ok56ha/Cy6q0NUfnXUaNV5FdhKKgofzN1HBJ/D4Cvi/g1Cynztx2//GObjhDo3MLnjFjrjhYa5w51BAxAc319xS5JJZBqscLP/yW0L9rtzVAxAhPwyx2ennCdF91o0EWWKIB6+UKLvSsV6W6eI1OemDepUZtyr6K/g4/f7ukX45lkEAfaSy0psXbWq3HvViI0mDfXXshdIBHX8QvgUiVOzqlEGCUTlLanmuWKI8/yg3B56iDYfeXY+gm6eB3Se+Hp1OfG9KEFGMEXHyd4WFQfgAciySItUy2gADALOmUsoq0QyknA780btuaOTOqQMCspe27Nl4/ffe3To16CZoDsmAmzWVTmxuhG5OTDgrxrx+rFFVxVKK0Kw+iPtdQ48Ar8hVWxs3YMaPh9dxDMr/D1qpVufMc06vR5CdOR90Vsg4q/cBZk98H5OpiRWRh0KCM/ouj7WOQacM3Ofc0nz2T+54wnfCkagm1hwoH5cJOmqhiapysQPUAtyR+22p0p2yfKFZ5xbjsWKKzG6ApkZdOCZ/VKzEWTYUYU6E9LzE
Hi
Thanks for the links,
I created issue https://github.com/coq/coq/issues/14149 about NoDup_dec being Qed instead of Defined.
About my own problem, I finally found a work-around that puzzles me as a Coq novice: I need to check that a list is empty as part of some more complex verifications on my data structures, nothing fancy but …
this definition allows me to do nice evaluation using Compute, you will note it matches an equivalent bool version. It is not that elegant but works
Definition Is_Empty (q : queue) : Prop :=
match q with
| nil => True
| _ => False
end.
The more direct
Definition Is_Empty (q : queue) : Prop := q = empty.
where empty is defined as nil, returns an _expression_ of 400+ lines. Coding style definitely matters to help the evaluation process I presume, a topic for further readings on my end.
Regards,
From: <coq-club-request AT inria.fr> on behalf of Xavier Leroy <xavier.leroy AT college-de-france.fr>
Reply-To: "coq-club AT inria.fr" <coq-club AT inria.fr>
Date: Wednesday, April 21, 2021 at 1:14 PM
To: "coq-club AT inria.fr" <coq-club AT inria.fr>
Subject: Re: [Coq-Club] Qed opacity and Coq standard library
On Tue, Apr 20, 2021 at 3:54 PM Jerome Hugues <jhugues AT andrew.cmu.edu> wrote:
Hi,
At some point in my project, I use Defined rather than Qed to have transparent proofs and use the Compute mechanisms to evaluate some statements. This works nicely for my own theorems, but I am stuck when this involves theorems provided by the Coq standard library, NoDup_dec in my case, but ultimately this might extend to more situations.
My rule of thumb is that every definition that is in Prop should be Qed and every definition that is in Type should be Defined. Most of the time, there's enough of a phase distinction for this heuristic to work well. See http://gallium.inria.fr/blog/coq-eval/ for more examples, including one that used to violate the phase distinction but was fixed since.
In this respect, NoDup_dec in the Coq standard library is a bug, and so is incl_decl in the same file, while In_dec correctly uses Defined. Why don't you file a bug report at https://github.com/coq/coq/issues ?
Regards,
- Xavier Leroy
One quick and dirty work-around is to copy/paste the code, change Qed into Defined and voila! But this is not satisfactory.
I could find some blog posts like this one https://plv.csail.mit.edu/blog/computing-with-opaque-proofs.html by Clément Pit-Claudel on this topic, but again it seems this imposes some rework.
I understand Qed and Defined are different for a reason, I am just curious whether there is a systematic way to change Qed into Defined on a case by case basis, or if we are forced to this type of modifications.
Is there some suggested readings on this topic?
Thanks
- [Coq-Club] Qed opacity and Coq standard library, Jerome Hugues, 04/20/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Jean-Christophe Léchenet, 04/21/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Jerome Hugues, 04/21/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Fabian Kunze, 04/23/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Jerome Hugues, 04/21/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Pierre-Marie Pédrot, 04/21/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Xavier Leroy, 04/21/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Jerome Hugues, 04/23/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Pierre Courtieu, 04/23/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Jerome Hugues, 04/23/2021
- Re: [Coq-Club] Qed opacity and Coq standard library, Jean-Christophe Léchenet, 04/21/2021
Archive powered by MHonArc 2.6.19+.