-
Notifications
You must be signed in to change notification settings - Fork 112
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
Boogie not Terminating with Prune on #791
Comments
You are better off asking this question in the Dafny forum. cc: @atomb , @RustanLeino , @keyboardDrummer |
I'm guessing that your program is missing pruning annotations, so pruning causes it be incorrect and this causes the SMT solver to hang and Boogie to wait indefinitely for an answer from the solver. |
@keyboardDrummer could you provide some context on the pruning annotations? Are there special assumptions made by Boogie for These boogie files were generated by an older version of Dafny on an old project (Veribetrkv https://github.com/secure-foundations/veribetrkv-osdi2020). Is it unreasonable to expect the boogie to work on these? (They actually mostly verify without the |
I think the upcoming version of Dafny may correct print uses annotations when printing Boogie files, but older versions will not. Could you check if this change to the /prune help answers your remaining questions? https://github.com/boogie-org/boogie/pull/793/files |
This was fixed by Boogie #765, it should work with nightly Dafny (or any version of Dafny that uses Boogie >= 3.0.1). Another thing about running Boogie directly on the printed file: the default type encoding in Boogie is currently
|
Thank you @keyboardDrummer for the pointer, I think that clarifies things quite a bit, I am trying to evaluate how well pruning works in reducing instability. From the responses above, I have the following impression:
Are these the correct impression? I have ran some experiments, which shows that 3 might be true. |
1 is correct - basically you need to move all axioms without triggers into For 3, I think you can still add the If you want to dive into Boogie to automate this, you can remove the if condition here, but just doing this would affect axioms with triggers too and weaken pruning. You can also update the logic here to only do this automatically in axioms without triggers. |
I am exporting some boogie files from some Dafny code.
I noticed that for some of them (attached in the zip file):
they terminate properly if
/prune
is not turned on,but they do not seem to terminate if
/prune
is turned on.For example, this would stop after about 11 seconds on my machine:
But this would run for more than a minute so I have to kill it:
I am running Ubuntu 20.04, boogie 3.0.4.0, .NET SDK 6.0.412.
My unsubstantiated guess is that it might be a problem with how Booige is interacting with Z3,
since both the dotnet and the z3 process are in interruptable sleep after a while,
neither using any CPU, but also not terminating.
nonterminating.zip
The text was updated successfully, but these errors were encountered: