coq-club AT inria.fr
Subject: The Coq mailing list
List archive
Re: [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations)
Chronological Thread
- From: Agnishom Chattopadhyay <agnishom AT cmi.ac.in>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations)
- Date: Tue, 21 Nov 2023 23:22:26 -0600
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=agnishom AT cmi.ac.in; spf=Pass smtp.mailfrom=agnishom AT cmi.ac.in; spf=None smtp.helo=postmaster AT mail.cmi.ac.in
- Ironport-data: A9a23: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 FUI
- Ironport-hdrordr: A9a23:xCDLXqq3gHDlxgxhai6mgR4aV5oPeYIsimQD101hICG9E/bo7P xG885rsSMc5AxhPU3I3OrwWpVoIkm9yXcW2/h2AV7KZmCP0wHEQL2Kr7GSoAEIcBeOj9K1u5 0QC5SWy+eeMXFKyej/6Am8V/A6wNeG96iswcPT1W1kQw0vS4wI1XYfNu9WKCNLrcB9ZKYEKA ==
- Ironport-phdr: A9a23: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 dezFkbiOnKIkjivXhvpMOce1Emm
- Ironport-sdr: 655d9024_wXrhlYnwMAbVUReZDThOHTpJTpiehT+0969rYCcmTYRXaYY axs82W2XIiJqr/Aot5Y4cC0QViJUgy0C0d1rS/w==
Thanks, I did not know about the with-pattern in Equations.
I tried using it here (the file Attempt1.v) : https://gist.github.com/Agnishom/a7414c092c1d23e37afebaa26f57580e#file-attempt1-v
But now I have a different problem. The last "Defined" seems to take about 10 seconds to finish and crashes Coq thereafter.
--Agnishom
On Tue, Nov 21, 2023 at 10:44 PM Jason Hu <fdhzs2010 AT hotmail.com> wrote:
why don't you use with-pattern? Convoy pattern should be automatic if you use with-pattern in Equations.
From: coq-club-request AT inria.fr <coq-club-request AT inria.fr> on behalf of Agnishom Chattopadhyay <agnishom AT cmi.ac.in>
Sent: Tuesday, November 21, 2023 3:39 PM
To: coq-club AT inria.fr <coq-club AT inria.fr>
Subject: [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations)Hi Coq-Club;
The code for the minimal complete example can be found here: https://gist.github.com/Agnishom/a7414c092c1d23e37afebaa26f57580e
I want to define a function which decreases in one argument using < and on another structurally. However, this seems to be rather complex in this case because of two reasons:
(1) the proofs do not seem to remember the appropriate information when I use match
(2) when I have multiple recursive calls, I need to be able to propagate the hypothesis through each recursive call.
For (1), I learnt that the appropriate tool is the Convoy Pattern. For (2), my guess is that the appropriate solution is to use a return type of the form {x | P x} so that P is known at every step.
However, when I try to combine these things, I get some very unfriendly error messages. One example is this:
(unable to find a well-typed instantiation for "?P": cannot ensure that "match o0 with | Some p => let (_, btc) := p in length btc <= length (snd (f, btc')) | None => True end" is a subtype of "(fun o : option (parse_tree * list bool) => match o with | Some p => let (_, btc) := p in length btc <= length (snd (f, btc')) | None => True end) (Some (t2, btc''))").
I believe that the issue arises from guessing an _ term incorrectly. But I am not sure that this is the case since I thought that Equations would make me prove any term that it is unsure about as an Obligation.
Any help is appreciated.
Thanks.
--Agnishom
- [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations), Agnishom Chattopadhyay, 11/21/2023
- Re: [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations), Jason Hu, 11/22/2023
- Re: [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations), Agnishom Chattopadhyay, 11/22/2023
- Re: [Coq-Club] Non obvious recursion (Convoy Pattern + Sigma Types + Equations), Jason Hu, 11/22/2023
Archive powered by MHonArc 2.6.19+.