Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Coq Standard Library Requests

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Coq Standard Library Requests


Chronological Thread 
  • From: Théo Zimmermann <theo.zimmi AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Coq Standard Library Requests
  • Date: Thu, 23 Aug 2018 18:43:44 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=theo.zimmi AT gmail.com; spf=Pass smtp.mailfrom=theo.zimmi AT gmail.com; spf=None smtp.helo=postmaster AT mail-ua1-f42.google.com
  • Ironport-phdr: 9a23:nReLFR80DJuVSP9uRHKM819IXTAuvvDOBiVQ1KB41+ocTK2v8tzYMVDF4r011RmVBdqds6oMotGVmpioYXYH75eFvSJKW713fDhBt/8rmRc9CtWOE0zxIa2iRSU7GMNfSA0tpCnjYgBaF8nkelLdvGC54yIMFRXjLwp1Ifn+FpLPg8it2O2+55/ebx9UiDahfLh/MAi4oQLNu8cMnIBsMLwxyhzHontJf+RZ22ZlLk+Nkhj/+8m94odt/zxftPw9+cFAV776f7kjQrxDEDsmKWE169b1uhTFUACC+2ETUmQSkhpPHgjF8BT3VYr/vyfmquZw3jSRMMvrRr42RDui9b9mRxDmiCgFNzA3/mLZhNFugq1Hux+uvQBzzpTObY2JKPZzfKXQds4aS2pbWcZRUjRMDJ28b4wVCOoOJeVXr4j4p1sLsxS+HwysC/npyj9Om3T72rE60+Q/HgHBxgAhHtMOsHHRrNX0L6oSXuW1w7PJzTXHdf9ZxTD96I3Rfx0nvPqCU7Vwcc/LxkkuEQPIllqQqY35PzOVy+QCqHKX4PZnVeKqjWMstgJ/oiC3y8syloXEgpgZx1PE+Clj3oo5O8O0RFR0bNK6FpZbqjuUOJFsQsw4RmFloCY6xaMCuZ68ZCUKzY4oxx/ba/CeboiH+A/vWP+fITp3mn5pYr2/hxG18Uivzu3zSNO430pNripAitXMt3YN2ALP6sWfVPdx4kOs1SyM2g3T8O1IP144mbTBJ5Mu3LI8jp8Tvl7CHi/ylkX2lqiWdkA89+i06+TofLLmqoWdNo91jwH+N6Uul9ewAeQ9KAcOXmyb9f6g273k+E31WK9KgeEukqnFrJDaItwWqbK+Aw9My4os9xK/Dyq939kDhnkGLFdFeAqdgITzOlHOJur4DfaljFi2njdr3aOOArq0CZLUa3PHjb3JfLBn6kcaxhBg48pY4sdoCjAGF8DyX0r8rtnRCBlxZxC0zuGhGtR404I2VmeGA6vfO6TX5wzbrtkzKvWBMddG8A32LOIosqa33C0J3GQFdKzs5qM5LXWxH/BoOUKcOCO+jdIIEGNMtQ07HrWz1A+yFAVLbnP3ZJoSoykhAdv/X4jGT4GpxreG2XXjR8AEViV9ElmJVEzQWcCEVvMLMn/AJ8ZglnkZXOHkRdN7kx6pswD+xvxsKe+GoiA=

Hi Larry,

It seems that the list moderators didn't see this message, because both of your previous messages passed through.
Anyways, as Beta said in reply to the other thread, you should open a pull request at https://github.com/coq/coq if you want to propose a change to the standard library. There are no clear rules of what is acceptable content for the standard library at the moment, but this small addition would have good chances of getting in.

Best,
Théo

Le jeu. 23 août 2018 à 16:52, Larry Darryl Lee <llee454 AT gmail.com> a écrit :
Hi Coq Moderators,

I previously sent the following message from
larry.lee AT nolijconsulting.com. Please disregard that message and post
the message I sent from llee454 AT gmail.com, as this is my personal email
address and the one I'd like to use with the Coq Club mailing list.

I apologize for the confusion,
Thanks,

- Larry Lee

On Thu, 2018-08-23 at 10:50 -0400, Larry Darryl Lee wrote:
> Hi,
>
> I recently worked on a small project and noticed that the List
> library
> within the Coq Standard library is missing two obvious proofs.
>
> First, the List library defines a proof `Forall_impl` that has an
> obvious analog for the `Exists` predicate.
>
> Second, the List library defines a proof `Forall_inv` that applies to
> the head of a list, but lacks the obvious analogue for the tail of a
> list.
>
> I'd like to propose adding two proofs to the Standard List library.
> The
> first, is a proof `Exists_impl` which fills the gap left by
> `Forall_impl`:
>
>     (**
>       Accepts two predicates, [P] and [Q], and a
>       list, [xs], and proves that, if [P -> Q],
>       and there exists an element in [xs] for which
>       [P] is true, then there exists an element in
>       [xs] for which [Q] is true.
>     *)
>     Definition Exists_impl
>       :  forall (A : Type) (P Q : A -> Prop),
>          (forall x : A, P x -> Q x) ->
>          forall xs : list A,
>            Exists P xs ->
>            Exists Q xs
>       := fun _ P Q H xs H0
>            => let H1
>                 :  exists x, In x xs /\ P x
>                 := proj1 (Exists_exists P xs) H0 in
>               let H2
>                 :  exists x, In x xs /\ Q x
>                 := ex_ind
>                      (fun x H2
>                        => ex_intro
>                             (fun x => In x xs /\ Q x)
>                             x
>                             (conj
>                               (proj1 H2)
>                               (H x (proj2 H2))))
>                      H1 in
>               (proj2 (Exists_exists Q xs)) H2.
>
>     Arguments Exists_impl {A} {P} {Q} H xs H0.
>
> The second is a proof `Forall_inv_tail` that fills the gap left by
> `Forall_inv`. It's proof is similarly easy:
>
>     (**
>       Accepts a predicate, [P], and a list, [x0 ::
>       xs], and proves that if [P] is true for every
>       element in [x0 :: xs], then [P] is true for
>       every element in [xs].
>     *)
>     Definition Forall_inv_tail
>       :  forall (A : Type) (P : A -> Prop) (x0 : A) (xs : list A),
>     Forall P (x0 :: xs) -> Forall P xs
>       := fun _ P x0 xs H
>            => let H0
>                 :  forall x, In x (x0 :: xs) -> P x
>                 := proj1 (Forall_forall P (x0 :: xs)) H in
>               let H1
>                 :  forall x, In x xs -> P x
>                 := fun x H2
>                      => H0 x (or_intror (x0 = x) H2) in
>               proj2 (Forall_forall P xs) H1.
>
>     Arguments Forall_tail {A} {P} x0 xs.
>
> At the moment, I've defined these proofs in a small personal library
> that I include in most of my projects, but I'd like to see these
> obvious extensions included in the Standard Library one day.
>
> Who should a I propose these additions to? What are the rules for
> adding theorems to the Coq Standard Library?
>
> - Larry Lee



Archive powered by MHonArc 2.6.18.

Top of Page