Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Proofs about FMapList / add / MapsTo

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Proofs about FMapList / add / MapsTo


Chronological Thread 
  • From: Vincent Siles <vincent.siles AT ens-lyon.org>
  • To: Coq-Club Club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Proofs about FMapList / add / MapsTo
  • Date: Tue, 4 Feb 2020 07:22:38 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=vincent.siles AT ens-lyon.org; spf=None smtp.mailfrom=SRS0=RM7k=3Y=ens-lyon.org=vincent.siles AT bounce.ens-lyon.org; spf=Pass smtp.helo=postmaster AT sonata.ens-lyon.org
  • Ironport-phdr: 9a23:zNWRRhUR6PWNt/OtIJ+dOIFbk+LV8LGtZVwlr6E/grcLSJyIuqrYbRGFt8tkgFKBZ4jH8fUM07OQ7/m8HzBQqsfa+DBaKdoQDkRD0Z1X1yUbQ+e9QXXhK/DrayFoVO9jb3RCu0+BDE5OBczlbEfTqHDhpRQbGxH4KBYnbr+tQt2agMu4zf299IPOaAtUmjW9falyLBKrpgnNq8Uam4RvJrs+xxfTrXZFeOtayGdmKFmOmxrw+tq88IRs/ihNtf8t7dJMXbn/c68lUbFWETMqPnwv6sb2rxfDVwyP5nUdUmUSjBVFBhXO4Q/5UJnsrCb0r/Jx1yaGM8L4S7A0Qimi4LxwSBD0kicHNiU2/3/Rh8dtka9UuhOhpxh4w47JfIGYMed1c63Bcd8GQ2dKQ91cXDJdDIyic4QPDvIBPedGoIn7u1sOtga1CQ21CO/y1jNEmnr60Ksn2OojDA7GxhQtEN0AsHvWrNv7OqQcX/2rwqbU1jjMde9a1C3n5YTUbhwso/eBVq9wf8rLzkkvEhvIgVqRqYzjIzyayOINs3SG5OR9VOKvj3AoqxpsqTWo2Mcsi4/JiZ4LxVDC6SV12p01Jdy8SEFlet6pC4VftyeBN4dvRsMjQ2ZouCAgxr0Bo567czEHxZI6zBDRbPyHdpKH4hPlVOuJIDd4gmhleLOliBqo/0ig0OvxXdS33lZStidJj9bBumwX2xHR6MWLUOZx80ag1DqVygze5OJJLVgqmabHL5Mt2L09m5oJvUjeHyL7mV/6gaCZe0gi5+Om8f7oYq/8qZ+ZL4J0ih/xMqApmsGnGuQ4NQ4OUHKH+eumzrHs40v5QK5Tgv0ykqjZt5baKd4cpq6jDA9Zyocj6xChADe6yNkUgHYKIE5fdB+FjYXlIUzCLfH5APulnlihnjRmy+jDPrL7A5XNKnbDkK3mfbZ480NS1RY9w81D659MFr8PJ/D+WkzpudHWDBA0KxK7w+D8CNlk0oMfWWWPAqmDPKPVq1+I6foiI/eNZI8TpDnyNf4l5+L0gX8imF8debem3YAMZX+jGfRmPkOZbmbyjdsbD2gKuBE+QPXuiFyCVj5TYWy+X6Um5jE0EI6mF5vMRpixgLyd2ye2BoFZZmdfClyVDXjoc5iEVOwXZSKJIs5hlyQEWqK7R48g0xGurg76xKB9Iura4C1L/a7kgfNy/qj4kQw4vRdwEs7Vh2qKViR/mn4Cbz4wxqF250JnnASty6991sJZE9de4e8BaQY+OIWUm/J7Ddv/XB6HZdaNRU2OT9O9RDUgSdR3xMUBNRUuU+6+hwzOinL5S4QekKaGUdltqvqFgyrBYv1lwnOD75EPykE8S5ITZ2Cgnet75g/VQYnTnBfBzvv4ReEnxCfIsVy74y+OsUVfClciSqLDVGwWIEbQtpH990TECbi0BuZ+a1oT+Yu5MqJPL+bRoxBDTfbnNs7ZZjjoyW23GBCDy/WBapGvf3Qa2mPaEkdWyw0=

TIL the existence of FMapFacts. Thank you Xavier !

V.

Le lun. 3 févr. 2020 à 19:09, Xavier Leroy <xavier.leroy AT college-de-france.fr> a écrit :
On Mon, Feb 3, 2020 at 5:54 PM Vincent Siles <vincent.siles AT ens-lyon.org> wrote:

I have a module built using FMapList.Map_ord, and I'm trying to prove that we can switch independent usage of add.

forall (state: State.t) (x y: Key.t) (a b: V.t), 
    ~ K.eq x y -> State.eq (add y b (add x a state)) (add x a (add y b state))

I plan to do that using eq_equal (https://coq.inria.fr/library/Coq.FSets.FMapList.html bottom of the page), and I'm down to proving something like:

Raw.PX.MapsTo k v1 (add y b (add x a state)) -> K,eq k x -> v1 = b

Here is the sketch of a simple proof.  Assuming "State.eq" is the "Equal" predicate between maps, you need to prove

  forall z, find z (add y b (add x a state))  = find z (add x a (add y b state))

First you rewrite using add_o from the FMapFacts library of derived facts. Then you do a case analysis on  Key.eq_dec x z and on Key.eq_dec y z.

Hope this helps,

- Xavier Leroy




Archive powered by MHonArc 2.6.18.

Top of Page