Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Proof about permutation

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Proof about permutation


Chronological Thread 
  • 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 10:09:32 +1100
  • Authentication-results: mail3-smtp-sop.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-f181.google.com
  • Ironport-data: A9a23:btHEjKBbqkLLihVW/8jnw5YqxClBgxIJ4kV8jS/XYbTApGkr3zUAn zZMXGjVOfmPZWOmKdtwOYWz9k0Dv5eDmtBkOVdlrnsFo1Bi+ZOUX4zBRqvTF3rPdZObFBoPA +E2MISowBUcFyeEzvuVGuG96yM6jMlkf5KkYMbcICd9WAR4fykojBNnioYRj5Vh6TSDK1rlV eja/ouOZjdJ5xYuajhOsvjZ8ksy1BjPkGpwUmIWNagjUGD2zCF94KI3fcmZM3b+S49IKe+2L 86rIGaRows1Vz90Yj+Uuu6Tnn8iGtY+DiDS4pZiYJVOtzAZzsAEPgnXA9JHAatfo23hc9mcU 7yhv7ToIesiFvWkdOjwz3C0usyxVEFL0OavHJSxjSCc52vGVnvTgMlKNUQ/epw9pr5pH1101 8VNfVjhbjjb7w636LeyS+0pgsZ6aceybNpZtXZnwjXUS/0hRPgvQY2QvY4ejGp23JgeW6+OP qL1ahI3BPjESxhSOVoMCI4/g+6yhz/+cjxErXqaoKM25y7YywkZPL3FbIGOK4zVH5k9ckCwl 3z5z0rgDg4gMtmY6xWmymqw38HXpHauMG4VPOTgqqQCbEeo7mcUEVgdUUaxieKoj1a3HdNZM U0dvCQ0xZXe72SuR9j5Ghm6+TuK505FHdVXFOI+5UeGza+8Dxul6nYsaD5kaONliOsPQDVtx 3rVx833OQZNiejAIZ6CzYu8oTS3MCkTCGYNYy4YUAcIi+UPRqlj3nojqf4zQMaIYs3J9SLYm G/V8XBv71kHpYtaiPXhpAGvbyeE/8CRFmYIChPrsnVJBz6Viaagbo2srFzZtLNOddbACFaGu 3cAlo6V6+Vm4XCxeM6lELRl8FKBva7t3NjgbbhHQcNJG9OFpSTLQGyoyGsiTHqFy+5dEdMTX GfduBlK+LhYN2awYKl8buqZUpp1lPe7ToS/DaqEMLKih6SdkifXrEmCgmbAjwjQfLQEzMnTx L/BIJjyVS1GYUiZ5GvsHb91PUAXKtAWnDuPH/gXPjyo1r2RYHP9dFv2GArmUwzN14vd+F+92 48HaaOikkwDOMWjPHS/2dNMdTgicyJnbbio8Jc/XrDYcmJb9JQJUaC5LUUJINw7wcy4V47go hmAZ6Ov4ACj2yWbdlXVMiALhXGGdc8XkE/X9BcEZT6As0XPq672hEvGX8psIesU56Z4wORqT vIIXcyFD74dAn7E4jkRJ9215oBraB3h10rEMjuHcQoPWcdqZzXI3dv4ISrp1i0FVRSsueUE/ raP6wL8QLg4fTpEMvr4UvyU4mmKjSAvo94qB0rsCftPSXro67lvenDQjOdoAsQiKifj5zq91 iSQCyg2vePm/o0/qoHIoYumrI6ZNfR0MWQHPmvc7JewbTL7+Ej6y6B+ce+4RxLvf0Kqx7eDP MJ+0OPZHMAcumpzo65QMupO3L0vwdnCvJpYxVlUJ2rKZFGVFb9QGHmK8s1RvKlrxLUCmw+Jd m+Q29tdK5ObEdjEFQMPGQ8bceiz7/EYtT3M5/ATIk+hxitW/qKCYHpCLSu3ly1RA7tkArwLm d57lpYt1DW+rR42PvKtrCNerT2MJ0NddZQXjMgRBYuzhzc7zl1HX4fnNRb3x5OxOvFsKUghJ wGGiJXS34p8wlXwSFttNHzv89cEu7EwlkFk8FswKW6NuOL5vd4s/RgI8T0IXgVflRpG9ORoO 1lUDU5+JITQ3jJkmPl8W3uIHidfDia44W308UMCz0fCfnmrV0vMDWwzAvmM90Yn6FBhfiBX0 bWb6WT9WxPoQZ3V8g4tf3V68trPYMdU9ALQvOyGReG+AIgccz7ppoSMdFg4gULrLu1pjXKWu NQw2vh7bJPKEBI5ooo5LtK//qsRQhXVH15ya6ht041RFF6NZQzo/yaFLn2wXcZ/J/bq10ucI O42L+JtUyWO7gq/ngo5N4UtfYAtxOUI4eAccIzFPWQF6ruTjgR4uaLqqxTRujUZfMVMo+0cd KXhLymPA06Bt0tywmXtlvRJCkC8QNsDZTD/4tyLzfU0J8oDnt1BIUAW+ZmojkqRKzpirk61v hucRqr4zN5C6IVLnqnwI5pHHCGLOcrWb72N1Ty8o/BLYc3Fa8vVhThIqFO9ZwVyFpkSUuRRi r6inoPW3kTEnbBuSEHfucCLOJdo7PWIfth8E5zIPlxFuyqdSenQ4xcn0EKpG6xjyd9yyJGue FqlVZGWa9UQZeZ4+FRUTCpvSzAmFKX9a/bblxOX9vijJEAU7l3aEYmB63TsUGB8cx0IMb3YD ivfma6nxvJcnbR2KC40PdNUKL4mHwa7QoojTcP7iheABGrxgl+ihKrrpSB91R71UEu7AOTIy rObYCineBqL7fSCiJkTtoFppRQYAUpsmeR6LApX59dyjCv8F2Ica/gUNZIdEJxPjyjuz9fCa SrQaHc5QzDINdienc4QPPy4NuteOgAPBjs9Djkg/kfRbyXvQY3ZUOIn+SBn7HN7PDDkyYlL7 D3YFmLYZnCMLlNBHI7/JcBXRc9ow/rbwjQD/kWVfwnaHUMFGbtTvJB+NFMlaMEEev0hUG3EI GE0QSZPR0TTpYsd1yp/UyY9JSz1dw8DA9nlgeljDTofV0imIDV89cDC
  • Ironport-hdrordr: A9a23:TLFICqDRCwy6yfHlHemV55DYdb4zR+YMi2TDtnoBMCC9F/bzqy nApoV/6faZskdyZJhko6HiBEDiexLhHPxOkO0s1N6ZNWGMhILrFuFfBODZslrd8kPFh4hgPG RbH5SWyuecMbG3t6nHCcCDfeod/A==
  • Ironport-phdr: A9a23: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 x4BwLe9KYZKc4OiixUkZV59k4DHXUHXWIIVyhA=
  • Ironport-sdr: 63a4e3b9_KWYs3cTwv/oabEXhjhktnhUgWzI1cM2eTo4kOM/hU05uv6X Q6JrmS2TrIcY0jIz/AyIDCDlttZFHquK3RWRfZg==

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



Archive powered by MHonArc 2.6.19+.

Top of Page