coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Rajeev Gore <rajeev.gore AT iinet.com.au>
- To: mukesh tiwari <mukeshtiwari.iiitm AT gmail.com>
- Cc: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Proof about permutation
- Date: Fri, 23 Dec 2022 15:28:16 +1100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=rajeev.gore AT iinet.com.au; spf=Pass smtp.mailfrom=rajeev.gore AT iinet.com.au; spf=None smtp.helo=postmaster AT icp-osb-irony-out9.external.iinet.net.au
- Ironport-data: A9a23:FhNAoqCV4/hQIBVW/17iw5YqxClBgxIJ4kV8jS/XYbTApDgr1jIDn DZKWD2HOarZYGajKNskPN6w/EIE7MSAn9JlHFNu+30yRH5G9pKVWt+SIxr+YH3IJ5STQkttv 5VBY4CcdZBlRXL1mEygY+PrxZVeOQFkZVZd5MrsYH0ZqdpMEX954f5bdm9QbrdA2bBVOSvU0 T/Ji5CZaQHNNwJcaDpOsfvZ8kg35ZwehRtB1rAATaET1LPhvyRNZH4vDfnZw6zQG9Q88kaSH o4v/Znhlo/r105F5uCNy94XRnY3rov6ZmBivJb3t5+K2XCurgRqukoyHKZHMx8P011llfgpo DlGncTYpQsBYvaWwLxFO/VVO3kWAEFIxFPICVWE7uuz1Gf/SkuvzKs0DRgLYsocyM8iVAmi9 dRAQNwMRgqKhe+73vefQ/VtmtkvIYzGY99A4hmMzxmAV69gHc2FGf2Vo4AEtNszrpkm8fL2f cMbZDdxKhvHeRBnO1YRBY54l+CtwHDiG9FdgAnE+vttuzCIkWSd1pDxasHlYN+wVf4FuWuaj ESZz0TgEzsVYYn3JT2ttyjEavX0tSj8QccZEKCy3v9smlyagGIJYDUTSFi2uvmli1G3QdMZK k0V5i8Goq079UjtRd74NyBUu1acpgZFAYMVT7B/slnSj/WIpQ2THC0YVDgEbts88cUsTCdxh hmVh9yvBDpzvaeTTn6QsLCS6zW/JUD5MFM/WMPNdiNdi/GLnW35pkunogpLeEJtsuDIJA==
- Ironport-hdrordr: A9a23:GuA8c61iA5L8n46yWv24kQqjBIIkLtp133Aq2lEZdPU1SKClfq WV98jzuiWatN98Yh8dcKm7SdC9qBHnlaKdkLNxAV74ZniFhILAFugLh+bfKlbbak7DH4BmpM BdWpk7JNrsDUVryebWiTPIderIGeP3lZxAU92uq0tQcQ==
- Ironport-phdr: A9a23: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
- Ironport-sdr: 63a52e92_nOf5cisPK6LL8uwsIkf48bVa1jleR00hTT6/A9p/BtwASY4 Hmxwq9Xmv2G4DVKFs80RrOwzUaWexAEM/fEUrzg==
- Ironport-sdr: sSQyKr7mZtZv6CbMrSG9LYOY8d3auR/LLwfeW0bIjots/zxi5+plrcMawEX4Rav1elWnKuav3g ewIK7PK1rKdMu82XkAA7anflzavKuX0oJIBmx9uyidTQV9FJcl2vb+o4219+FazKA/6LIZlNmg 5FRFqHP9HE6v2nBb5Q62ioClAYRWvk9cLnfruPrr9Ia7fVKU4mQ4jZP6iW6T6iMd5NB+G7qQ7t 3p7sbnuAwCoGk5W/HQeLbOeiyWCRnpTDG0sCB+2kKDUcdnpzUjs/LB+GV4MdW4SlFa6OBR2Hnv Lfw=
Hi all,
apologies if this is a dumb question, but I am a Coq newbie so be gentle
please:)
> I am trying to write a function that traverse the list and groups the
> similar elements. For example, if I have a list [3; 1; 1; 3; 5; 1] then
> I want it to arranged [[3; 3]; [1;1;1]; [5]],
I have been trying to think of a way to implement a sequent calculus in
Coq using multisets rather than lists because, then, exchange comes for
free.
One of the things that crossed my mind was a function that did exactly
what Mukesh asks about above since [[3; 3]; [1;1;1]; [5]] to my mind is
just the multiset consisting of two-3s, three-2s and one-5.
So, suppose that the Gamma (LHS) part of my sequent consisted of the
list of "formulae" [3; 1; 1; 3; 5; 1] then its multiset representation
would something like [[3; 3]; [1;1;1]; [5]].
Am I just being dumb?
Is there a "natural" way to encode sequents which are lists of formulae
so that Coq thinks of them as multisets?
thanks,
raj
mukesh tiwari <mukeshtiwari.iiitm AT gmail.com> writes:
> Hi Dominique,
>
> I am trying to write a function that traverse the list and groups the
> similar elements. For example, if I have a list [3; 1; 1; 3; 5; 1] then I
> want it to arranged [[3; 3]; [1;1;1]; [5]],
> and go is a helper function that is called by a top level function with R
> instantiated with boolean equality of natural numbers (Nat.eqb). But your
> speculation is right because if R
> is instantiated with Nat.ltb then it can be a part of quicksort.
>
> Best,
> Mukesh
>
> On Fri, 23 Dec 2022 at 03:48, Dominique Larchey-Wendling
> <dominique.larchey-wendling AT loria.fr> wrote:
>
> Hi Mukesh,
>
> This looks like part of quicksort. Is this your target?
>
> Best,
>
> Dominique
>
> ----- Mail original -----
> > De: "mukesh tiwari" <mukeshtiwari.iiitm AT gmail.com>
> > À: "coq-club" <coq-club AT inria.fr>
> > Envoyé: Jeudi 22 Décembre 2022 11:55:38
> > Objet: [Coq-Club] Proof about permutation
>
> > Hi everyone,
> >
> > How can I prove the theorem, go_app, shown below? I find it slightly
> > amusing that in the base there is not enough information that I can
> > use to discharge it. You can see the complete source code [1] (I
> > manage to prove this theorem for a simplified definition of go using
> > filter [2])
> >
> > Fixpoint go (z : A) (xs : list A) : list A * list A :=
> > match xs with
> > | [] => ([], [])
> > | (x :: xs) =>
> > match go z xs with
> > | (ys, zs) =>
> > match R x z with
> > | true => (x :: ys, zs)
> > | _ => (ys, x :: zs)
> > end
> > end
> > end.
> >
> >
> > Theorem go_app :
> > ∀ (xs ys zs : list A) (z : A),
> > In z xs ->
> > (ys, zs) = go z xs -> Permutation (ys ++ zs) xs.
> > Proof.
> > refine(fix Fn xs {struct xs} :=
> > match xs as xsp return xs = xsp -> _
> > with
> > | [] => fun Ha => _
> > | xh :: xst => fun Ha => _
> > end eq_refl);
> > simpl;
> > intros ? ? ? Hb Hc.
> > +
> > refine(match Hb with end).
> > +
> > refine(match Hb with
> > | or_introl Hap => _
> > | or_intror Hap => _
> > end).
> > ++
> > rewrite Hap in Hc.
> > rewrite R_refl in Hc.
> > (* There is no information in the context that
> > connects xst to xsh and ysh *)
> > destruct (go z xst) as (xsh, ysh) eqn:He.
> > inversion Hc; subst; clear Hc; simpl.
> > constructor.
> > (* Now I am stuck! Because this is what
> > I am trying to discharge so I am chasing my tail?
> > *)
> > admit.
> > ++
> > destruct (R xh z) eqn:Hd.
> > +++
> > destruct (go z xst) as (xsh, ysh) eqn:He.
> > inversion Hc; subst; clear Hc; simpl.
> > constructor.
> > eapply Fn;
> > [exact Hap | eapply eq_sym; exact He].
> > +++
> > destruct (go z xst) as (xsh, ysh) eqn:He.
> > inversion Hc; subst; clear Hc; simpl.
> > eapply Permutation_sym, Permutation_cons_app,
> > Permutation_sym.
> > eapply Fn;
> > [exact Hap | eapply eq_sym; exact He].
> > Admitted.
> >
> >
> > Best,
> > Mukesh
> >
> > [1] https://gist.github.com/mukeshtiwari/55439c129b35071585e05c9847a96c59
> > [2]
> >
> https://gist.github.com/mukeshtiwari/55439c129b35071585e05c9847a96c59#file-constant_space-v-L17
- Re: [Coq-Club] Proof about permutation, D. Ben Knoble, 12/23/2022
- <Possible follow-up(s)>
- Re: [Coq-Club] Proof about permutation, Rajeev Gore, 12/23/2022
- Message not available
- Re: [Coq-Club] Proof about permutation, Rajeev Gore, 12/23/2022
- Message not available
- Message not available
- Re: [Coq-Club] Proof about permutation, Rajeev Gore, 12/24/2022
- Message not available
- Message not available
- Message not available
- Message not available
- Re: [Coq-Club] Proof about permutation, Frederik Krogsdal Jacobsen, 01/02/2023
- Message not available
- Re: [Coq-Club] Proof about permutation, Rajeev Gore, 12/23/2022
- Message not available
Archive powered by MHonArc 2.6.19+.