-
Notifications
You must be signed in to change notification settings - Fork 85
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
prooftree is broken with 8.5 syntax #30
Comments
If the plan is to revive prooftree, then there is much more to fix. For instance, it doesn't understand any of the various ways the focus might change in 8.5, such as with proof bullets, braces, goal selectors, goal reorderings (revgoals, cycle, swap), unshelve, etc. Is the provenance of subgoals, which would be needed to make the tree really reflect the proof, even something Coq keeps track of? |
I have somewhere a branch that shows all subgoals, even those that are not Maybe we should write in the CHANGE that it is currently broken for 8.5. P. 2016-01-14 17:04 GMT+01:00 Jonathan Leivent notifications@github.com:
|
I won't discourage you from trying to fix it! I was once a PVS user, and so miss this feature. However, I think if the tree doesn't really mirror goal provenance properly, then it might end up confusing users in 8.5. For instance, if a tactic shelves some subgoals which then are unshelved later, what will prooftree show? What will it show in the case of Grab Existential Variables? Especially in these cases where the origin of the goals isn't obvious, the user would rely on prooftree to help them out. If in one goal, the user unifies something with an evar, causing the other goal corresponding to that evar to morph somehow, what would prooftree show? Should prooftree show the dependencies between goals as well as the parent-child relationship? OK - well maybe I just did discourage you... |
I think this debate already happened between Hendrik and Arnaud, the goal Let us add Hendrik to this discussion. P. 2016-01-14 18:58 GMT+01:00 Jonathan Leivent notifications@github.com:
|
That is an interesting point - I had always thought prooftree was there to show the proof engine's tree, while the proof bullets/braces show the script's tree (now that they can in 8.5). Who is the consumer of prooftree's output, the user doing the proof or later users inspecting the proof by stepping through it? Probably the right answer is "Yes" (both). But they might wish for different behaviors. |
Dear all, I am very happy to see ProofGeneral development is continuing now About the concrete problems discussed here:
Bye, Hendrik |
I got a lot of prooftree working now, I hope that I can open a I am not sure I understand the purpose of the new shelve/unshelve |
Great! That's exciting :)
@jonleivent Is the expert on this, but my understanding is that they create explicit goals from existential variables that would have been moved to Grab Existential Variables back in 8.4. |
Clement is correct. For example, one common tactic in Coq is eapply - which when used on the conclusion will create subgoals for the eapply'ed lemma's arguments. However, some of those subgoals may be shelved because they are "unifiable" with others - meaning that they are present in other goals as dependencies. Usually these shelved subgoals correspond to implicit args, but not always (explicit args can also be "unifiable" with later ones). Often, this shelving is just what the user wants - as those shelved "unifiable" subgoals will get solved as a side-effect of solving the remaining visible ones. But this is not always the case, and so various users requested an unshelve tactic so it can be used in combo with eapply (and other tactics that do similar shelving of implicit args) to force all resulting subgoals to remain visible regardless of their dependencies. |
I just filled a bug report for coq: the tactical unshelve is not documented "unshelve tac." performs tactic tac and then unshelve anything shelved by P. 2016-01-22 17:50 GMT+01:00 Jonathan Leivent notifications@github.com:
|
I just created a pull request that fixes basic proof-tree |
@jonleivent thanks for the explanation! My understanding is that |
Using Grab Existential Variables, when it is allowed, will always get the remaining shelved goals. Even goals shelved manually. In other words, at any point in time (other than when Focus is being used), one can do "all:shelve. Grab Existential Variables." and the result will be that all goals will become visible and focused. |
fixed by commit 8c4d991 |
Regexp are outdated, I tried to fix it but I don't get the exact things to be matched. I guess we need Hendrik Tews for this. I will try to reach him.
The text was updated successfully, but these errors were encountered: