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: Frederik Krogsdal Jacobsen <fkjac AT dtu.dk>
  • To: Rajeev Gore <rajeev.gore AT iinet.com.au>
  • Cc: <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Proof about permutation
  • Date: Mon, 2 Jan 2023 09:20:08 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 192.38.82.195) smtp.rcpttodomain=iinet.com.au smtp.mailfrom=dtu.dk; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=dtu.dk; dkim=none (message not signed); arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NcfoGKLo/dGYBFRk+0q2/7u627uf97oYBsIvlZJYp+Q=; b=PE2a4/7/bspWP+Nph2nC/df1xXsdOnIZeYR0S/maM2ccJZ7Hxwvq5aFq2IL5EqitmMnNeggoEYcmbL9WPVh/wKa0trrfqfvYFqLtYeTd9dlP1ErOw+rNCiQXpjsiVk1p29qgOLAcoBiHgfhzTmelHyKjjG/j6Hl+HJPmbvqMTxqCoubDa2kyADKB4/IBpZ92z7utdxh+tJY4mawGO6rnZ/2nui36/ZIIPtkQ3cu2q3Se8bMgLLrs6MXRh1VP5pbfSsIt1cpYJ96L/uArOI9dBlKnJrZMV2nAjgCJK0fmZWqIEZV7P6CgitzrnLsRUOFrqVhK3tfD5l061huF1Qp+FQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bOvDWY6TRbGx7EHa58LK4vU6wU/CKa4SJeYCCeVzWLeirwb4EgT8/uJUo1oEEM/yfNch7Z6xHNyFVjfS5fKNls4alSgvpxeVeJqnZb0CwmwYHR04Q2y45JOnBkyRftJXVXej41KD/1BzHnh1ukQti0LM6V6Jl2foWdBxnVs3bbOsnZxo9Vo3oTVn1uNMnDLA4LnE5UHbFbTT0vqyXmd4L4pdyaRrOcgz2hod9kdmYUvvIeFx3Qvp6UaHegQ59WoI6+dhM4uwEDngDYJYKYLLVhQfRGMtnQmvvBjMow9CAvk1mouOyLcUsA1G8jzuQ7PdiNyc87U8Qf36gtFCXmXyMA==
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=fkjac AT dtu.dk; spf=Pass smtp.mailfrom=fkjac AT dtu.dk; spf=Pass smtp.helo=postmaster AT EUR04-VI1-obe.outbound.protection.outlook.com
  • Ironport-data: A9a23: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 fDsaaiale0IL25Td6k5E51cQ07F/fSJLlgodiDD
  • Ironport-hdrordr: A9a23:JpUZZKCaxDPOAtblHeiTsceALOsnbusQ8zAXPh9KJCC9I/bzqy nxpp8mPR+dskdtZJhSo6H6BEDgewK4yXcR2+Us1NiZLW7bUQeTXf9fBM7Zskzd8k7Fh4hgPM VbAsxD4bTLZDAU47eYkWuF/s4boOVvsprY+ds2qU0dMj2CA5sQnzuRYTzranGeKjM2f6bRWK Dsn/au8FGbCAYqh/CAdww4tqX41pD2vaOjRSRDKw8s6QGIgz/twLnmEyKA1hNbaD9LyadKyx mMr+SsjJ/Dj9iLjjvnk0PD5ZVfn9XsjvFZAtaXt8QTIjLwzi61eYVIQdS5zXIIidDqzGxvvM jHoh8mMcg2wWjWZHuJrRzk3BSl+Coy6kXl1USTjRLY0I/ErQoBeo98bL9iA1rkAgsbzZ9BOZ twri2kXk9sfFP9dCeU3amAa/glrDvxnZMYq59ks5Vua/prVFZvl/1pwKp0KuZKIMuo0vFsLA A4NrCu2B8RSyLXU0zk
  • Ironport-phdr: A9a23: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 LHKugsth/nFV9AzMC5ytmQsOm4rHsG5yXcxgg==
  • Ironport-sdr: 63b293c1_HkYoVN7L9tnFhxrhkV+A0TKmx/B2GowZLRCKLA4cj38GYD7 8fbb1xyxNTJo1aWUPecyKd8u5FW5d+Jy+O//5zw==

Dear Raj,

A few months ago I also spent some time thinking about how to represent a sequent calculus and a prover for it using the existing multiset package (MSets) so that I could "easily" prove soundness and completeness of the calculus and prover.

I am not a Coq expert (I usually work in Isabelle), so I'm sure my formalization can be improved significantly, but maybe seeing it could at least be helpful for getting a taste of some possibilities.

My lightly commented development is available here:
https://github.com/fkj/coq-microprover

I should note that my approach is heavily inspired by similar developments in Isabelle and Agda by J. Villadsen and A.H. From.

Cheers,
Frederik

On 23/12/2022 10:16, Dominique Larchey-Wendling wrote:
Dear Raj and Mukesh,

Indeed finite multisets (or finite sets) can be a pain in Coq because they are not
inductive types: they are quotient types. Here I discuss two opposed approaches:

1) trying to build the quotient type. In Coq this usually requires being able to 
   compute a witness for an equivalence class (eg a normal form) and a Boolean
   test for normal forms.

   For multisets, the least assumptions that I know of are of a type X with 
   a (computably) decidable total order (DTO) over it, ie 
   - an irreflexive and transitive relation R : X -> X -> Prop
   - together with Rdec : forall x y : X, { R x y } + { x = y } + { R y x }

   Then the type of finite multisets can be implemented as 
             
             { l : list X | is_ordered R_dec l = true } 
             
   where is_ordered R_dec : list X -> bool is a Boolean checker for orderedness. 
   The Boolean output ensures that (is_ordered R_dec l = true) has a unique proof
   (see EqDep_dec).

2) The second approach (that I prefer, see below) is working with lists, up to 
   permutations.
   
    a) It can be lightly automated but with no assumptions using Setoid rewriting,
       declaring (@Permutation X) as a "Parametric Morphism".
       
    b) It can be heavily automated assuming a computably decidable equality over X
       (which is a bit weaker than a DTO as above).
       The idea is: in that case, two list are permutable iff the number of 
       occurrences of each value x:X matches for the two lists. Then, one projects 
       permutation identities onto equalities between number of occurrences (in nat) 
       and then call tools like autorewrite/lia to solve arithmetic equations. 
       See the following gist to get an idea of what can be done

       https://gist.github.com/DmxLarchey/17e0a90d558313b98cc30617b5a67086
       
       For instance, the following statement can be proved automatically:
       
                l++[x] ~p x::u -> k ~p rev v -> k++u ~p v++l

Certainly, to manipulate sequents, it is not a problem to assume decidability of
equality for logical formulas and then 2b) can be a good solution which I encourage
you to look at.

However, when writing libraries, assuming decidable equality might be too
heavy and then Setoid rewriting is a better choice, but with much more
rewriting work.

The first reason I do not like building quotient types like 1) is that you 
still need to manipulate proofs that lists are ordered, so not much is gained 
compared to 2a).

The second reason is that the quotient type of multisets cannot be nested
within trees to build for instance unordered finitely branching trees. Trying
to build that type is already a painful exercise. The way I know of is to
define a (DTO) over ordered finitely branching trees and select those which
are recursively totally ordered.

Raj, for an easy start, I recommend 2b as described in the gist.

Best,

Dominique


De: "mukesh tiwari" <mukeshtiwari.iiitm AT gmail.com>
À: "Rajeev Gore" <rajeev.gore AT iinet.com.au>
Cc: "coq-club" <coq-club AT inria.fr>
Envoyé: Vendredi 23 Décembre 2022 07:00:51
Objet: Re: [Coq-Club] Proof about permutation

On Fri, 23 Dec 2022 at 16:55, Rajeev Gore <rajeev.gore AT iinet.com.au> wrote:

Hi Mukesh,

> I don’t much about sequent calculus (even though I was a part of ANU
> logic group for a long time :)),

Shame on you :)

I deserve that :) 




> but my use case is to deal with an equality (equal_finite_sets) in a sane
> (* multiset represented by list *)
> Definition finite_set {A : Type) := list A.
>
> (* two multisets are equal *)
> Definition equal_finite_set {A : Type) (xs ys  : @finite_set A) : Prop :=
>    forall x, In x xs <-> In x ys.
> etc

But there is already a multiset package in Coq, so why redefine it?

Because I am working on a existing project (not open sourced yet) and it has its own multiset library.



I am trying to wrap my head around the existing multiset package in Coq,
and in particular, how to use it to define sequents built from multisets
in a way that is comprehensible to a proof-theorist (not a Coq expert).

I believe Dominique is an expert, that I am aware of, about the proof theory and Coq so probably he will have more to say.


Best,
Mukesh



raj




Archive powered by MHonArc 2.6.19+.

Top of Page