Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Correct order type Module for the MSetRBT

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Correct order type Module for the MSetRBT


Chronological Thread 
  • From: Suneel Sarswat <suneel.sarswat AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Correct order type Module for the MSetRBT
  • Date: Mon, 29 Aug 2022 17:41:01 +0530
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=suneel.sarswat AT gmail.com; spf=Pass smtp.mailfrom=suneel.sarswat AT gmail.com; spf=None smtp.helo=postmaster AT mail-ej1-f50.google.com
  • Ironport-data: A9a23:wYOjKqPv71mqNNrvrR2IkcFynXyQoLVcMsEvi/4bfWQNrUoqgWAEm mFLC2GEPv7bNDCgf4xzaIm0oEIDuJDSndMxGXM5pCpnJ55ogZqcVI7Bdi8cHAvLc5adFBo/h yk6QoOdRCzhZiaE/n9BCpC48T8kk/vgqoPUUIYoAAgoLeNfYHpn2EkLd9IR2NYy24DpWVLV4 LsenuWGULOb824sWo4rw/nbwP9flKyaVOQw4zTSzdgS1LPvvyF94KA3fcldHFOkKmVgJdNWc s6YpF2PEsw1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXe345jXMfwZ3u7hB3Tn9xJ7 8x9l6CoRCIPMb/3n/U4EBRXRnQW0a1uoNcrIFC6uM2XikDEKj7inq0oA0YxMokVvO1wBAmi9 9RCcGFLPk3F3bvmhu/jIgVvrpxLwM3DJ54Zt3xkiyrQF+05SIzrTKDD5Nse1zA17ixLNayEP JNJOWIzBPjGSxdDM0U9D4ofp82huHe8d2Vak3y0l4NitgA/yyQoiOS3WDbPQfSBQtwQlUKFr Erd7mHhC1cbMsaewHyL6BqRavTnmCr6XMcfFuT9+KMyxlKUwWMXBVsdUl7TTeSFZlCWAdJTE 2sNyggStaUX0kO5dd7sel61ryvR1vIDYOZ4H+o/4QCL76Pb5QeFG2QJJgKtjvR266faohR6h je0c8PV6S9H6+LKFCrMnluAhXbjZnhPdD5qiTosFFNdu7HeTJcPYgUjp+uP/Yawh9zxXDzym nWE8XB4iLIUgsoGka68+DgrYg5ARLCYFGbZBS2NBgpJCz+Vgqb7O+REDnCFsJ59wH6xFAXpg ZT9s5H2ABoyJZ+MjjeRZ+4GAauk4f2IWBWF3wA2QMB4q2/zqyT9FWy13N2YDBc2WirjUW+5C HI/RSsMjHOuFCD3M/EvMtLZ5zoClPGxTYWNug/ogipmO8AtLmdrDQlhYkmf222FraTfufBXB HtvSu71VSxyIf0/klKeHr5BuZd2mH1W7T6MHfjTkU77uZLAPyX9YeleYDOzghURtvzsTPP9q IYBaaNnCnx3DIXDX8Ug2ddOdQtTdiJgWsueRg4+XrfrHzeK0VoJU5f5qY7NsaQ890iMvuuXr Hy7RGFCz1/z2S/OJQmQOyJsbbruWdB0qndiZX4gOlOh2n4CZ4ez7fdHJ8FnI+V/rOEzn+RpS /QletmbBqsdRznC/QMbZ8avoYFnciOtmg/TbTGuZyIyfsI7SgGQoo3kcwLj+TMgFC2yscdi8 bSs2hmKE5UGTgVmSs3Rbav3nV+2uHEcnsN0XlfJcoEDIhWyrNAyJnWo3PEtIswKJRHS/Reg1 l6bUUUCuO3Ag44p692W162JqoGeFeEhTEdXGm/s66nvaXvX82+l9o93UOiSeAfbWm6pqr6pY v9Yzq2lPfAKwARKvo57H+o5xK4y/YG09bpTzwAhEXeSKlr2UvVvJX6J2cQJvapIn+cLtQyzU 0OJ299bJbTZZ5+/QQBJfFIoPraZyPUZujjO9vBpck/00yl6oeicWkJIMhjQ1SFQcOlvPIU+z btzscIa8Vbk2B8jM9LDgyINsmrRdjoPVKIospxcC4ju01J5xlZHaJ3aKyn3/JDfNIkWYxdye meZ1PjYmrBR5kveaH5vR3LD6uxQ2MYVsxdQwV5eelmEl7IpXBPsMMG9LNj2cuhU8vmD++d6O 2wuOk8sYKvTp3Fng89MW23qEAZEbPFcFood1HNR/FA1jWHxPoAOEIH5EemI9UEdtWlbe1C3O ZmGnX39X2+CkN7Zh0MPtI0MlxAnZdN0/wzG3sugGqxp2nX8jSXN2seTWIbDl/cr7Q7dSqEKS SmGMducsZHGCBM=
  • Ironport-hdrordr: A9a23:aDhPxK811noz+eQ9sSBuk+DhI+orL9Y04lQ7vn2ZKCYlC/Bw8v rFoB11726QtN98YgBDpTnEAtjifZq+z/9ICOsqTNOftWDd0QPCEGgh1+vfKlbbakrDH4BmpM FdmmtFZOEYz2IWsS832maF+h8bruW6zA==
  • Ironport-phdr: A9a23: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 Z5IQbheBgRd/hwyBUFsHdhEK5ByDGpMrA==
  • Ironport-sdr: kWZmp9wwYGh7t26azMWGVSN2u8wU/ruEcQpDjt9TwCRYoHBj1pa8IOnZK9dA74xDgnAcIdVteT aeN1xLaC0ifJVJsDvAkOOgFRQzpyuHr5EVcOlE/We/dHyR8T8KcdySE5ooEo21O4k+0pD6b2A3 6tCeACuE9gIGyDWqfIvv+9FqsBFeY4zx5eivZA1n4HaaQ/Z9tXoPVkzJKH8dB++hMThG1WTC/u fj8JXhLOwQk8How0Ig9RzP53sXxTWXszymUzq0xCDENlAF0BLzzYR9x1gSJOXR1RqFJhX7bews FCMkGQrm/bXAN+Yq//nYGf00

Dear Mukesh,
Thanks a lot for this code. This is very useful. Couple of questions, if anyone can help me to figure it out.
1. Where do I find results proved for max_elt/min_elt or add etc?
2. How do I define compare_specs with Prop eq and lt in the Orders.OrderType module?
3. How to claim complexity of the extracted programs using RBT?
Thanks,
Suneel


On Sun, Aug 28, 2022 at 1:40 AM mukesh tiwari <mukeshtiwari.iiitm AT gmail.com> wrote:
Hi Suneel,

Does this help [1]?

"If I use Module Ops (Ordered:OrderedType) <: MSetInterface.Ops
Ordered., then I get eq_eqiv is missing even though it is present!"
Can you post a snippet of your code? Let me know if you have any
questions.

Best,
Mukesh


(* Begin Coq code *)
Require Import MSets MSetRBT
ZArith Coq.ZArith.Int FunInd
Psatz List.

Import ListNotations.


Print Orders.OrderedType.

Module M := MSetRBT.Ops Z_as_OT.

Print M.elt.
Print M.tree.

(* Construct Order Type
Z_as_OT
*)
Module OT <: Orders.OrderedType.

Definition t := Z.
Definition eq := Z.eq.
Definition eq_equiv : Equivalence eq.
Proof.
econstructor.
+ apply Z.eq_refl.
+ apply Z.eq_sym.
+ apply Z.eq_trans.
Defined.
Definition lt := Z.lt.
Definition lt_strorder : StrictOrder lt.
Proof.
econstructor.
+ intro x.
apply Z.lt_irrefl.
+ intros ? ? ? Hx Hy.
apply Z.lt_trans with (m := y);
try auto.
Defined.
Definition lt_compat := Z.lt_compat.
Definition compare := Z.compare.
Definition compare_spec := Z.compare_spec.
Definition eq_dec := Z.eq_dec.
End OT.

(* Get a concrete instance *)
Module W := MSetRBT.Ops OT.

Print W.

(* Let's construct some tree *)

Definition ttree := W.treeify [1; 2; 3; 4; 5]%Z.
Eval compute in ttree.
(*
= W.Node Black (W.Node Black (W.Node Red W.Leaf 1 W.Leaf) 2 W.Leaf) 3
(W.Node Black (W.Node Red W.Leaf 4 W.Leaf) 5 W.Leaf)
: W.tree
*)

(*end Coq code *)

[1] https://gist.github.com/mukeshtiwari/328d9a299807a87ee75127f1effc0117

On Fri, Aug 26, 2022 at 9:09 AM Suneel Sarswat <suneel.sarswat AT gmail.com> wrote:
>
> Dear Coq-Club members,
> What is the correct order type module for MSetRBT? My order defined for the elements are total. The issue I am facing is the following.
>
> Module Ordered <: OrderedType.
>
> (*
> Definition t := instruction.
> Definition eq (x y: t) := eqi x y.
> Definition lt (x y: t):= lti x y/\~eqi x y.
>
> .........
> .........
> ......... equivalence of eq and transitive/compare for lt
> *)
> End Ordered.
>
> Inductive color := Red | Black.
> Module Color.
>  Definition t := color.
> End Color.
>
> Module Ops (Ordered:Orders.OrderedType) <: MSetInterface.Ops Ordered.
> Include MSetGenTree.Ops Ordered Color.
> Module TB := MSetRBT.Ops Ordered.
> (*Error: Signature components for label compare do not match: expected type "Ordered.t -> Ordered.t -> comparison" but found type "forall x y : Ordered.t, Compare Ordered.lt Ordered.eq x y".  *)
> If I use Module Ops (Ordered:OrderedType) <: MSetInterface.Ops Ordered., then I get eq_eqiv is missing even though it is present!
>
> What signature of OrderType are required for RBT tree and which Module to be used for that?
>
> Thanks again,
> -Suneel



Archive powered by MHonArc 2.6.19+.

Top of Page