Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Fixpoint decreasing argument with remove_min in tree

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Fixpoint decreasing argument with remove_min in tree


Chronological Thread 
  • From: Suneel Sarswat <suneel.sarswat AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Fixpoint decreasing argument with remove_min in tree
  • Date: Sat, 3 Sep 2022 22:37:54 +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-ed1-f48.google.com
  • Ironport-data: A9a23:yOIH8KP8A9ZPCQPvrR2HkcFynXyQoLVcMsEvi/4bfWQNrUoi1mEBm mQdUWyCM6qKZTGjLth0Po6w9kpVu8CDm941THM5pCpnJ55ogZqcVI7Bdi8cHAvLc5adFBo/h yk6QoOdRCzhZiaE/n9BCpC48T8kk/vgqoPUUIYoAAgoLeNfYHpn2EkLd9IR2NYy24DoW1jV4 7senuWGULOb824sWo4rw/nbwP9flKyaVOQw4zTSzdgS1LPvvyF94KA3fcldHFOkKmVgJdNWc s6YpF2PEsw1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXe345jXMfwZ3u7hB3Xj5NL9 tUQm6CVZitxLvHGoscweQdHRnQW0a1uoNcrIFC6uM2XikDKKj7in6UoA0YxMokVvO1wBAmi9 9RCcGFLPk3F3brmhu7rIgVvrpxLwM3DJ54Zt3xkiyrQF+05SIzrTKDD5Nse1zA17ixLNayEO JVJOGc2BPjGSy0WPnETCJNnp+nyqmKjNAYH9WrKgoNitgA/yyQoiOS3WDbPQfSBQtwQlUKFr Erd7mHhC1cbMsaewHyL6BqRavTnmCr6XMcfGOT9+KI6xlKUwWMXBVsdUl7TTeSFZlCWBcIcE XIUpwQSiIcerFz3ROPecjemvyvR1vIDYOZ4H+o/4QCL76Pb5QeFG2QJJgKtjvR25KfaohR6h je0c8PV6S9H6+LKFCrMnluAhXbjZnhPdD5qiTosFFNdu7HeTJcPYgUjp+uP/Yawh9zxXDz8m nWE8Hh4iLIUgsoGka68+DgrYg5ARLCYF2bZBS2NBgpJCz+Vgqb7O+REDnCFsZ59wH6xFAXpg ZT9s5H2ABoyJZ+MjjeRZ+4GAauk4f2IWBWF3wA1RsV6q27zoC7+FWy13N2YDBc5WirjUW+5C HI/RSsMjHOuFCD3NfcvPtrZ5zoClPG4SI2Nug/ogipmO8AtLmdrDQlhYkmf222FraTfufBXB HtvSu71VSxyIf0/klKeHr5BuZd2mH1W7T6MHfjTkU77uZLAPyX9YeleYDOzghURtvzsTPP9q IYBaaNnCnx3DIXDX8Ug2dBPdA1XdiBkXPgbaaV/L4a+H+avI0l5Y9e5/F/rU9INc319mria8 3ejdFVfzVaj13TLJR/bOH9mYbLrG514qCtjbyArOF+p3VklYJquvP9PLctpIeF/+bwx1+NwQ tkEZ96EXaZCRzHBzDIXMsvwoYlkQxK0iF/cJCGiejU+I8VtSlWRqN/pdwfi7gcUCS+zuZdsq rGszFKJTp8KRgAkB8HTMar9w1S0tHkbueRzQ0qYeokJKBuwqNBncnWjgOU2LscALQT46gGbj wvGUw0FoeTtopMu9IabiK2BqbCvGbQsE0dfGV7d8u/qZyTX+2yUwbhAXvyNSjbTWT6m466lf +hUk6jxPfBbzlZHt41wT+Riwa4kvYC9orZbykFpECyOYQj7TLxnJXaC0I9EsagUnu1Vvg6/W 0Su/NhGOOXWZJm0TgZJfAd1PP6e0fw0myXJ6ahnKkvN4iIqrqGMVl9fPkXRhSEBfqF5Npgpn bUotMIMsVftjxMrNpOLgnkR+TjcaHMHVKoju9cRB4qy0lgnzVRLYJr9DC7q4cHQN48dbBFye jLE1rDfg7l8x1bZdyZhH3b62+cA148FvwpHzQNfKlmE8jYfaiTbAPGMHfULogVpItFv1utyP i1mOxQwK/neuThvg8dHUianHAQp6Nh1PKDu4wNhqYEbZxDAuq/xwKkVNuOE/URf+GVZFtSe1 K/N037rCF4GY+mothbfmidZRzjLQtl49wmEk8eidyhA81/WfhK96pKTiaE0R9cLzC//aIArZ QWnwQqoVZDGCA==
  • Ironport-hdrordr: A9a23:RtcfRaoNnDBBWmEeG9w/l5waV5oSeYIsimQD101hICG9E/bo7v xG+c5w6faaskd1ZJhNo6HjBEDEewK+yXcX2+gs1NWZLW3bUQKTRekI0WKh+V3d8kbFh4lgPM lbAs5D4R7LYWSST/yW3OB1KbkdKRC8npyVuQ==
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 4WVmB9QgKrN2ltle7dnckPgJ3ex1Q4Otmk4RnvmrV85D9S4zZ7jPV6pJJlOzveMiZP0PmYTSYS vHo/osqWiFSa1tAZke5CpzV3LZfUog57vRHJErOyMh30OiTghKviO+kIcEPIXfvFl4HKhefwEu FA8yUcx0oF4BHAE63BomdeEUjUsw9NNG/Y/EeJH4+HeEDhqW7O9Bw35qApkaorzM7xWRHnBgbV Pw1ova5WYLN3wE+7U5QFE1fvyK0ihTR9w7J7O27Q2MQUQhatzc++cjw+tU8QMMU3w4jY/hQOKT THyzi118V4idDaLAdAcO4y9z

Dear Mukesh,
Thanks for the solution. This is the kind of generic solution I was looking for. I did an unsuccessful attempt with
passing n with (prf : n = M.cardinal tb) mentioned at link. Your solution is very close to the second answer, I guess.
The code along with details is extremely helpful.
Thanks again.
Suneel


On Sat, Sep 3, 2022 at 5:34 PM mukesh tiwari <mukeshtiwari.iiitm AT gmail.com> wrote:
Hi Suneel,

I have written the function [1] but it hinges on an admitted lemma [2], which requires you prove that when you delete an element from a tree, the size decreases. The idea is same as suggested by Pierre because ‘remove_min’ is not structurally recursive and you need to use well founded induction. 

Best, 
Mukesh 


On Sat, 3 Sep 2022 at 09:34, Castéran Pierre <pierre.casteran AT gmail.com> wrote:
Removing the minimum element of a tree doesn’t give you a subtree (structurally speaking) of the original tree.

Nevertheless, you can define a function by well-founded recursion over the tree’s size.

 - First, notice that removing an element of a tree strictly reduces its size
 - you will find some examples of well founded-recursion in  https://mattam82.github.io/Coq-Equations/examples/Examples.Basics.html




Le 2 sept. 2022 à 19:42, Suneel Sarswat <suneel.sarswat AT gmail.com> a écrit :

Dear friend,
Is there a way to write a fixpoint using a tree such that in each recursive call the tree after removing the minimum element is used?
I am getting the following error.

Require Import MSets MSetRBT ZArith.
Module M := MSetRBT.Ops Nat_as_OT.

Fixpoint test (tb ta : M.t)(a:M.elt) :M.t.
destruct (M.remove_min tb) eqn:H.
destruct p eqn:Hp.
unfold M.elt in a.
destruct (a-e) eqn:Hae.
exact (test t ta a).
exact ta.
exact ta.
Defined.
(* Cannot guess decreasing argument of fix. *)

Also the {struct tb} failed.






Archive powered by MHonArc 2.6.19+.

Top of Page