-
Notifications
You must be signed in to change notification settings - Fork 236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Port the Coq bug minimizer to F* #1151
Comments
Great idea, currently we spend significant time minimizing F* inputs. How does Jason's tool vary from vanilla delta debugging for input minimization? |
It sounds exactly like an instance of delta debugging, particularly the example of removing irrelevant lines. There are a few techniques to apply that are specific to verification; for example, you can try to replace definitions that are used with |
The tool is somewhat specialized to Coq; it knows how to communicate with Coq, which things in the error message change between runs (line numbers, universe numbers, file names, evar numbers), and which don't. That said, it is basically a delta-debugging tool, though I haven't written the binary search part of it (and I hadn't heard of delta-debugging when I wrote it). Specific passes that it does which are specific to Coq/verification:
|
I guess another thing is that I take advantage of the fact that Coq sources are linear, so removing things from the end generally doesn't hurt, and that it's rare that you need to remove multiple lines simultaneously to remove any of them. |
Bonus points if the whole thing is written as a tactic |
@JasonGross has an awesome bug minimizer for Coq (described in this CoqPL paper). The idea is to take a bug, defined as a specific error, and remove input that isn't necessary to trigger that bug. In addition, it inlines external modules to try to get a self-contained example.
This might be a super ambitious project, but I think in the long run such tools are really useful.
The text was updated successfully, but these errors were encountered: