coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: mukesh tiwari <mukeshtiwari.iiitm AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Implementing a simple program using AVL tree.
- Date: Wed, 24 Aug 2022 08:56:18 +0100
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=mukeshtiwari.iiitm AT gmail.com; spf=Pass smtp.mailfrom=mukeshtiwari.iiitm AT gmail.com; spf=None smtp.helo=postmaster AT mail-lf1-f54.google.com
- Ironport-data: A9a23:hmoIGK9dWy0dGPDqwwo4DrUDqXiTJUtcMsCJ2f8bNWPcYEJGY0x3z zRLCGuEOaqPZTfxLtl1aIq3pk0B7cfXytZhTwFk+S9EQiMRo6IpJ/zJdxaqZ3v6wu7rFR88s Z1GMrEsCOhuExcwcz/0auCJQUFUjP3OHvymYAL9EngZqTVMEU/Nsjo+3b9i6mJUqYLhWVnV6 Ymu+5S31GKNglaYDEpEs8pvlzs05JweiBtA1rDpTa0jUPf2zhH5PbpHTU2DByOQrrp8QoZWc 93+IISRpQs1yfuC5uSNyd4XemVSKlLb0JPnZnB+A8BOiTAazsA+PzpS2Pc0MS9qZzu1c99Z9 MtRj7iTZhoVNIbtwvo7TQR9MRBgMvgTkFPHCSDXXc27ykTHdz7ozawrAhxqe4If/elzDCdF8 vlwxDIlNEjSwbLrhuvlFa8x2qzPL+GzVG8bknR9zjzCDeonXpnZQuPL5N5E2R8/g8lPGbDVY M9xhT9HNk2RPEAWagx/5JQWhNWFniL6fyVh71e/m/M4vljsyVZY3+24WDbSUoXSGZ89clyjj mnB5iHyBgwQHMeOzCKMtHOqnO7G2y3hML/+D5W9//9uxVmdnykdVUFQWly8rv20zEW5XrqzN nD45AISs7QI0G+EU+X3dDzivliaozs+asRfRrhSBB629oLY5AOQB24hRzFHacA7uMJeedDM/ g/Y9z8OLWw/2IB5WU5x5Z/P8mzvYXl9wXsqIH5bHVFcsrEPtalq1kqXJuuPBpJZmTEcJN0d6 zWDrSx7g7tKyMBWi+O0+lfIhz/qrZ/MJuLU2uk1djP8hu+aTNT+D2BN1bQ9xagcRGp+Zgfa1 EXoY+DEsIgz4WilzURhutklErCz/OqiOzbBm1NpFJRJ323zpSf5ItEMu2gkehcB3iM4ldnBM B+7VeR5tM87AZdWRfIfj3+ZUJl0k/CxRbwJqNiNP4oTO/CdizNrDAk3PRLKt4wcuEcrlq47N P+mnTWEXB4n5VBc5GPuHY81iOd1rghnnD+7bc2lknyPjOXGDFbLE+ttGAXVNYgRsvjUyDg5B v4FaKNmPT0EALOgCsQWmKZPRW03wY8TXMim8JcHLLfcfmKL2ggJUpfs/F/oQKQ994w9qwsC1 ijVtpZwxAWtiHvZBx+Nb3w/OrrjUYwu/30+NC0oe12v3iF7M4qo6a4ecboxfKUmpLQzl64qE 6FddpXSGOlLRxTG5y8ZMsvwoYlkQxKh2lCDMi+jVz4gcsMyXAfO4NLlIlDi+XBWXCq6vMczu ZO60QbfTcZRTghuFpeEZ/emzlf3tn8YwbogU0zNK9hVWUPt7Ik6c3yr3qFre5kBcEyRyCGb2 gCaBQYjidPM+4JlosPUga2krpuyF7QsE0dfGV7d5+nkOCTf+F2l3tYcAuuFeDbqVFT09r+nU uNbwqyuK/YAhltL79NxHrs3n6Iz49zj++1Twgh+Ri6Zal2qDvZkLCDD05QT8KJKwbBdtE29X UfWootWPrCAOcXEFl8NJVp6Mr7Si6lMwjSCv+4oJEja5TNs+ObVW0tlORTR2jdWK6F4Md94z Op96tQa7Rez1kgjPtqc1HsG8m2NKjkEXfxiuMxGRoDsjQUvxxdJZpmFUn3655SGatNtNEg2I 2/L2PCT2ewEnkeSIWAuEXXt3PZGgchcsh59ylJfdU+CncDIh6Nq0RBcmdjtot+5EvmaPyNP1 mlX24ldIKyP+3JsipEGUT3wXQ5GAxKd9wr6zF5heKg1iaW3fjSlEYH/Eb/lEIMlH6Z0cT1S/ bXew2HgOdovVN+kxTM8ACaJtNS6JeGcNWT+dASPEMGMHp18aj3g6kNriazktDO/af4MaIb7S SWGMQq+hWAX9cLdnkHjN7Sn6A==
- Ironport-hdrordr: A9a23:/fUdb6uOiq8dCCOayzOCqprM7skDT9V00zEX/kB9WHVpm62j5r mTdZEgvyMc5wxhPU3I9erwWpVoBEmslqKdgrNxAV7BZniDhILAFugLhrcKgQeBJ8SUzJ876U 4PSdkZNDQyNzRHZATBjTVQ3+xO/DBPys6Vuds=
- Ironport-phdr: A9a23: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
- Ironport-sdr: U7Df0T9YpiCR/HwokA4feN04xxNNSJ6dKNZdh5ojQbjK0IPuim93M9M+rhuRnU3w6PRGl+Qh6T 9+RpE1+xgKpGixVsvglh8WbdbHrZiFDnP68L5vEKzkv0wMJZmxa8uPD7AL543oW0MNYn84K21z F4BkGloKUlMuKzUuJdKyyXZR9CCiY7BR0OnFzWsR7yyNJ3yrkcT+79djo1v9GA1gS4Mn4D6oNq /UyYIF2eSWFtmY+9n1p5dbqdR7X20jhcGB0w0ARHmbAp0R2c6AEdUDetsJjO3UOvUW7pRNUWOV 5ogm49DSaXjP85ppoLXMXe/Y
Hi Suneel,
I just quickly looked at the source code [1] and wrote a simple code:
Require Import MSets
ZArith Coq.ZArith.Int FunInd
Psatz.
Module M := MSetAVL.Ops Int.Z_as_Int Z_as_OT.
Check M.remove_min.
(*
M.remove_min
: M.tree -> M.elt -> M.t -> M.t * M.elt
*)
Unfortunately, I can't do induction on 't' because the induction
principle is unset [2],
but you can still do functional programming using the 'refine' tactic,
so I believe it should
not be a problem. I believe the challenge would to find the concrete instance
of
modules, e.g., in this case 'Int.Z_as_Int' and 'Z_as_OT' for instantiation,
but
if you search you can get it, otherwise you can alway ask here.
Lemma tree_proof : forall (t : M.tree), (0 <= M.height t)%Z.
Proof.
refine(
fix fn t {struct t} :=
match t with
| M.Leaf => _
| M.Node h _ _ _ => _
end).
Admitted.
Best,
Mukesh
[1] https://github.com/coq/coq/blob/master/theories/MSets/MSetAVL.v
[2] https://github.com/coq/coq/blob/master/theories/MSets/MSetAVL.v#L42
On Tue, Aug 23, 2022 at 9:03 PM Suneel Sarswat <suneel.sarswat AT gmail.com>
wrote:
>
> Dear friends,
> I am new to the FSet or MSet library of Coq. I have got a simple task of
> implementing a program (current version involving lists) using trees.
> My elements are of record type with lexicographic order. I am able to
> define (thanks to xavier leroy) ordertype X using Module X <: OrderedType
> and can initiate Module T:= FSetAVL.Make(OrderedB).
> I could do simple things like creating a tree using T.add but I could
> understand how to use many other functions. For example, T.remove_min (not
> recognized!). Also, how to do case (destruct) on trees similar to lists.
> I am sorry if my question is elementary but due to lack of documents/use
> cases I am finding it difficult to proceed. Also, I have a deadline fast
> approaching.
> Please suggest some documentation or some use cases for quick help.
> Many thanks,
> Suneel
>
>
- [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/23/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., mukesh tiwari, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Pierre Courtieu, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Pierre Courtieu, 08/25/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/26/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Pierre Courtieu, 08/25/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., mukesh tiwari, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Suneel Sarswat, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., mukesh tiwari, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., Pierre Courtieu, 08/24/2022
- Re: [Coq-Club] Implementing a simple program using AVL tree., mukesh tiwari, 08/24/2022
Archive powered by MHonArc 2.6.19+.