coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: mukesh tiwari <mukeshtiwari.iiitm AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Proof about permutation
- Date: Fri, 23 Dec 2022 11:42:08 +1100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mukeshtiwari.iiitm AT gmail.com; spf=Pass smtp.mailfrom=mukeshtiwari.iiitm AT gmail.com; spf=None smtp.helo=postmaster AT mail-lj1-f177.google.com
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:9VaONK0mOMVarfDnMZh4XwqjBIskLtp133Aq2lEZdPU1SL3gqy nKpp4mPHDP+VMssR0b6LK90ey7MBDhHP1OgLX5X43SODUO0VHAROpfBMnZowEIcBeOkdK1u5 0QFZSWy+edMbG5t6vHCcWDfOrICePozJyV
- Ironport-phdr: A9a23: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
- Ironport-sdr: 63a4f96e_zST1/8oXf37Ea8CPPumN7nI/qHjmR4sYTrcKyiphx+E9lAm QOi+fj+FGQI0yvDeKMB7zL+9qPVqZT/xrh3Sb2A==
Hi Mukesh,
My immediate feeling is that the In predicate is not necessary. In fact, `(ys, zs) = go z xs -> Permutation (ys ++ zs) xs` should hold universally regardless of what z is. I only suppose there is a lemma which states that
If Permutation (ys ++ zs) xs, then Permutation (x :: ys ++ zs) (x :: xs) /\ Permutation (ys ++ x :: zs) (x :: xs)
Did you try this path? I suppose to prove the second part of the conjunction you need to do another induction.
Thanks,
Jason
From: mukesh tiwari
Sent: Thursday, December 22, 2022 6:09 PM
To: coq-club AT inria.fr
Subject: Re: [Coq-Club] Proof about permutation
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
- [Coq-Club] Proof about permutation, mukesh tiwari, 12/22/2022
- Re: [Coq-Club] Proof about permutation, Marko Doko, 12/22/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/22/2022
- Re: [Coq-Club] Proof about permutation, Marko Doko, 12/22/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/22/2022
- Re: [Coq-Club] Proof about permutation, Marko Doko, 12/22/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/22/2022
- Re: [Coq-Club] Proof about permutation, Dominique Larchey-Wendling, 12/22/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- RE: [Coq-Club] Proof about permutation, Jason Hu, 12/23/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- Message not available
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- Message not available
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- Re: [Coq-Club] Proof about permutation, Dominique Larchey-Wendling, 12/23/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- Message not available
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- RE: [Coq-Club] Proof about permutation, Jason Hu, 12/23/2022
- Re: [Coq-Club] Proof about permutation, mukesh tiwari, 12/23/2022
- Re: [Coq-Club] Proof about permutation, Marko Doko, 12/22/2022
Archive powered by MHonArc 2.6.19+.