coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Castéran Pierre <pierre.casteran AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Red-black tree and remove/add specifications
- Date: Sun, 9 Oct 2022 08:23:48 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=pierre.casteran AT gmail.com; spf=Pass smtp.mailfrom=pierre.casteran AT gmail.com; spf=None smtp.helo=postmaster AT mail-wr1-f44.google.com
- Ironport-data: A9a23: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 4QqbTgsfXxXgnId3Sqtl7C51f3ZUP7SI+0UUBqy
- Ironport-hdrordr: A9a23:hUEAEq3GS94Iu3fSSd4ZMQqjBIUkLtp133Aq2lEZdPU1SL37qy nKpp4mPHDP+VEssR0b6LO90ey7MAvhHOBOkPIs1MaZLWzbUQKTRekIjbcKgQeQfREWntQ96U 4KSdkbNDSfNykCsS842mWF+hQbreVvPJrGuQ6n9QYWceiiUc9d0zs=
- Ironport-phdr: A9a23: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 w==
- Ironport-sdr: 634268f5_CLYcyFx0JfK9YthLq1xZyQp+1xmdH8oCm+ptdoJhkFOs1Ag f3shGgLr+7vQRQI3PmWOQ4wzf1FVE824X7r9LBQ==
Hello,
For comparison, in the Coq’Art book (chap. 11) we specified the remove function on search trees as follows:
Inductive RM (n:A) (t t': btree A) : Prop :=
rm_intro :
~ In n t' ->
(forall p:A, In p t' -> In p t) ->
(forall p:A, In p t -> In p t' \/ n = p) ->
search_tree t' -> RM n t t' .
Definition rm_spec (n:A) (t:btree A) : Set :=
search_tree t -> {t' : A_btree | RM n t t’}.
Note that this specification describes a total function: if we try to remove a non-element of t, we obtain an equivalent (same content) search tree.
The file (with search trees on Z instead of A) is available on
Pierre
Le 9 oct. 2022 à 07:17, Chris Dams <chris.dams.nl AT gmail.com> a écrit :Hello Clement,
You are right that the original lemma is true. I actually misread it
the other way around, like
In x t -> In x (remove y t) which does need a x <> y clause.
However, one then has to note that as a specification the lemma In x
(remove y t) -> In x t is
not very good. It is also satisfied by having a remove function that
removes all elements and
returns the empty container.
Kind Regards,
Chris
Op za 8 okt. 2022 om 20:51 schreef Clément Pit-Claudel <cpitclaudel AT gmail.com>:
Hi Chris and Suneel,
The original lemma looks correct to me. The standard library contains a proof of it for lists, in fact:
in_remove:
forall [A] eq_dec (l : list A) (x y : A),
In x (remove eq_dec y l) -> In x l /\ x <> y
What am I missing?
Clément.
On 10/8/22 09:54, Chris Dams wrote:Hello Suneel,
To me it looks your removal lemma is not correct. "In x (remove y t) -> In x t"
should not be true if x and y happen to be equal. This needs a precondition
x <> y. And then you also need something for the case where they are equal,
like "~ In x (remove x t)".
Kind Regards,
Chris
Op za 8 okt. 2022 om 09:24 schreef Suneel Sarswat <suneel.sarswat AT gmail.com>:
Dear Friends,
I am working on an application of the red-black tree data structure in implementing an algorithm. In my setting, I am using remove and add. Unfortunately, I could not find out a specification lemma for 'remove' which states the following trivial property.
Lemma remove_spec0 (t:tree)(x y:elt):
In x (remove y t) -> In x t.
Or
Lemma remove_spec0 (t:tree)(x y:elt):
List.In x (elements (remove y t)) -> List.In x (elements t).
The current module has specifications for 'InT', which is a proposition on the membership of keys whereas I am looking for membership of data. Is there any way to have an equivalent lemma without unfolding the definition of remove?
Similarly, for adding specification, the current module has a lemma for 'InT' but not on membership of the whole element.
Thanks,
Suneel
- [Coq-Club] Red-black tree and remove/add specifications, Suneel Sarswat, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Chris Dams, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Suneel Sarswat, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Chris Dams, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Suneel Sarswat, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Chris Dams, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Clément Pit-Claudel, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Chris Dams, 10/09/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Castéran Pierre, 10/09/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Chris Dams, 10/09/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Suneel Sarswat, 10/08/2022
- Re: [Coq-Club] Red-black tree and remove/add specifications, Chris Dams, 10/08/2022
Archive powered by MHonArc 2.6.19+.