Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Using hint databases to partially solve a goal?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Using hint databases to partially solve a goal?


Chronological Thread 
  • From: Yannick Zakowski <zakowski AT seas.upenn.edu>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Using hint databases to partially solve a goal?
  • Date: Sun, 10 May 2020 21:12:26 -0400
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=zakowski AT seas.upenn.edu; spf=Pass smtp.mailfrom=zakowski AT seas.upenn.edu; spf=None smtp.helo=postmaster AT mail-qk1-f181.google.com
  • Ironport-phdr: 9a23:3CneyBbPe4iXVzvyjmYfle7/LSx+4OfEezUN459isYplN5qZrsmzbnLW6fgltlLVR4KTs6sC17OL9fCxEjBZqb+681k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba5yIRmsrgjcssYajIR/Jq0s1hbHv3xEdvhMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW874s3rrgTDQhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VDq+46t3ThLjlSEKPCM7/m7KkMx9lL9VrgyvpxJ/wIDabo+aO/V8cazBct0XXnZBU8VLWiBdHo+xYYkCAuwcNuhYtYn9oF4OoAO8Cga2AuPvzD5IiWP13aYn0OsuCwLG3AsuHtIVs3TUrcj+OaATUO+vz6nIyjvCb+hV2Tf884XIaQ4uruuXXb5qbMrR0VcgFwXDjlmKt4PqIi6V2/0LvmOG4OVuSfihhHQ7qwFtvDev3MEsh5HUi48JxF7I6Tt0zokpKNC7SkN2bsOpHZpMuyybKoZ6Xs0vT39mtSs4y7ALvZy2cDUJxZkn2RLTdeGLfpaU7x7/UuuaPDl2hHVgeL2lhhay91CtxffmVsao0FZKrzRFncfXtnwU0BzT99aHReVn/ke9xzmPzBrf6u9eIU0yiKHVKIYhz6YumpYPtUnPBCz7lUXsgKOIaEko5PKk5/nkb7n7vpOQKY55hh3jPqkrlcGyA+E1PwcSU2SH5eix0bzu8lblTLlWi/A7nK3Uv4reKMkep6O0AQ1Y34Mt5hqjETir09EVkHYaI11eZh6KiZXiNUvUL/DiF/i/hkyhkDd1yPDCOb3sGpDNIWLCkLflZLp98k1cxBcqwdBR+p5ZCawNLOj8Wk/2s9zYARs5PBKuz+n7D9V905sSWWOJAqCHLKPfqUGE6v4rLuWWZ4IYuCzxJ+Y76/Lwl3M1hFwQcbSx0ZsScn+4H/BmI0uDYXrrh9cMCWYLsRA9TOzthlyCSj1TZ3epUqIn+D40EpmmAZ3eRoC1nrOB2iG7EodIaW9bF1CACW3oeJmcW/cQdCKSJddsnSADVbi4UoMuyRWutBLhxLd8NerV+igYtYr529Rv5u3Tkwsy9T1uAMiH3WGNVTI8omRdTDgvmat7vEZVy1GZ0KE+jeYLO8ZU4qZ4WwE8NJXfh95zCNftQQHANoObQVWhXc6lABkqQ9sqhcIWbkB7Xdiuk0aQjGKRH7YJmunTV9QP+aXG0i2pfpcv+zP9zKAkymIebI5KPGyiiLR48lGNVZXEml7fir6nc6Ja0SLQpj7akDi++XpAWQs1ap3rGHASYkyM84b870LGCqatUPEpa1sYj8GFLaROZ5viilAUHK6/auSbWHq4niKLPTjN3qmFNdS4YGgUx2PAEEUClUYe8WvUbQU=

Hi Théo,

The paper you linked describes a work in progress. Did it end up being fleshed out in some form or another? Or alternatively, is the prototype implementation of `apply` that it refers to available somewhere to toy around with the technique?

Best,
Yannick

On 5/9/20 10:44 AM, Théo Zimmermann wrote:
Hi Jonathan,

This is actually a FAQ. In a previous Coq-Club thread I referenced the
abstract I wrote in 2016 explaining this technique (which wasn't novel
at this time since I was attributing it to an e-mail of Michael
Soegtrop in a previous Coq-Club thread):
https://hal.archives-ouvertes.fr/hal-01671994/document

Théo

Le sam. 9 mai 2020 à 07:03,
jonikelee AT gmail.com

<jonikelee AT gmail.com>
a écrit :
On Fri, 8 May 2020 21:33:32 -0400
Jason Gross
<jasongross9 AT gmail.com>
wrote:

I believe you can add `shelve` as a hint, and this will allow the
search to succeed with a partial solution. You can then use
`unshelve eauto` to get back the left-over goals
That sounds familiar, Jason. Didn't you once advise me to try this? I
recall trying something like "Hint Extern 999 _ => shelve : db". I
don't recall it working out that well, though.

Eddy, can you make the rules into rewrites, and use autorewrite with db
instead?

On Fri, May 8, 2020, 20:06 Eddy Westbrook
<westbrook AT galois.com>
wrote:

Hey coq-club list-ers,

Is there any way to partially solve a goal using the auto hint
databases? That is, is there a way to do something like "eauto with
<my_db>” but for it to make as much progress as it can and then
leave the remaining sub-goals for me to prove manually?

The use case here is that I have monadic programs I’m trying to
prove properties of, and I have a set of rules to prove those
properties modulo properties of the values produced in those
computations. So, for instance, I have a monadic program that
manipulates bitvectors, and my rules can reduce (in a rote and
automatable way) all the properties about my monadic program to
properties about bitvectors that I have to prove by hand. The hope
is that I could use the hint databases to define how to apply my
rules, and then I could apply these hints and end up with my goals
about bitvectors to prove by hand. The only other option is to
write a monolithic tactic that pattern-matches on the form of the
goal to apply my rules, and that isn’t as nice and extensible.

Any ideas?

Thanks,
-Eddy



Archive powered by MHonArc 2.6.18.

Top of Page