-
Notifications
You must be signed in to change notification settings - Fork 200
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
Specs failing proof validation #67
Comments
I re-ran the script using the 202210041448 1.5.0 pre-release and these are the list of failures instead: Succeeded in 1.4.5 but fail in 1.5.0:
Fail in both 1.4.5 and 1.5.0:
Upgrading to 1.5.0 fixed these proofs:
|
@ahelwer If it might be of any help, I wrote a small Python script a bit ago to parse the command line output of the TLAPS proof manager into a slightly more structured format. Just wanted to mention it in case it might be helpful to build on at any point e.g. to improve proof checking diagnostics in future. |
@will62794 that's very cool, and a neat project! Is the python script published as a module on pypi? |
Thanks for checking the proofs in the examples repository. I fixed most of the broken proofs, except for the ones in LamportMutex_proofs that I'm still working on: we had to dumb down the SMT backend because it was getting a little too smart, and this broke a number of legitimate proofs. I think the lesson for us is that we should consider the proofs in this repository, as we do for the examples in the prover distribution. For an interactive proof system, it doesn't make sense to promise backward compatibility. Some changes may be considered beneficial overall but still break existing proofs. But we should do a best-effort attempt at fixing proofs that we break. The detail of what I found is below. specifications/LoopInvariance/BinarySearch.tla specifications/LoopInvariance/SumSequence.tla specifications/MisraReachability/ParReachProofs.tla specifications/MisraReachability/ReachabilityProofs.tla specifications/MisraReachability/ReachableProofs.tla specifications/Paxos/Consensus.tla specifications/Paxos/Voting.tla specifications/PaxosHowToWinATuringAward/Consensus.tla specifications/PaxosHowToWinATuringAward/Voting.tla specifications/TwoPhase/TwoPhase.tla specifications/ewd840/EWD840_proof.tla specifications/ewd998/AsyncTerminationDetection_proof.tla specifications/ewd998/EWD998_proof.tla specifications/lamport_mutex/LamportMutex_proofs.tla I haven't looked at the proofs in Bakery-Boulangerie yet that were not in the original list. |
@helwer No, the script is not published, but feel free to extend/modify it and publish it there if you want. |
@muenchnerkindl sorry for the false reports! Might have been some interaction of the 1.4.5 fingerprint files with the 1.5.0 fingerprint files. I deleted the .tlacache directory. The updated set of proof failures is:
Finally,
when run with:
Can you help me out with caching proof results so that re-checking them is fast? How would I do that? |
For older versions of tlapm, fingerprints are stored at More recent versions store them at I don't think there is a command line option to change these paths so I'm assuming that if you want to persist the fingerprint files you'll have to do that in a script. |
I believe that all proofs now work again. Thanks for uncovering these issues! |
Hi @muenchnerkindl thank you for your work! Unfortunately I am still running into issues with the following proofs, using release https://github.com/tlaplus/tlapm/releases/tag/202210041448 on Linux; click the dropdowns to see associated errors: specifications/Bakery-Boulangerie/Bakery.tla
specifications/Bakery-Boulangerie/Boulanger.tla
specifications/Paxos|PaxosHowToWinATuringAward/Consensus.tla
specifications/lamport_mutex/LamportMutex_proofs.tla
One final strange one is specifications/ewd998/EWD998_proof.tla, which will ordinarily fail because it cannot find Randomization.tla. If I extract the standard modules (which include Randomization.tla) from the nightly tla2tools.jar and put them on the tlaps path with the specifications/lamport_mutex/LamportMutex_proofs.tla
You can also see these errors occurring in this CI run: https://github.com/tlaplus/Examples/actions/runs/4347799514/jobs/7595536785 |
I am also seeing strange behavior with fingerprint caching. Only some proofs seem to benefit from it; if I delete the
If I then run it again without deleting the fingerprints, I get:
So for some reason specifications/MisraReachability/ReachabilityProofs.tla (and possibly Voting.tla) is not hitting the fingerprint cache and seems to be checking all proofs from scratch. |
I compiled and installed from a fresh checkout of 202210041448 and couldn't reproduce any of the failures you reported. Could you run |
OK I managed to reproduce the problem under Ubuntu. |
This one is easy, it's a timeout. Z3 is given 5 seconds to solve the proof obligation, but (on my machine) it takes about 11 seconds. I've submitted #73 to increase the timeout to 30 seconds. |
I whipped up a quick script then downloaded & ran TLAPS 1.4.5 on macOS against all the modules containing proofs, and the following failed validation (no additional solvers installed, no additional command-line parameters given other than
-I
for include directory):@muenchnerkindl I'd be interested in knowing how many of these are real proof failures and how many are due to wrong options or lack of installed solvers. My script was very simple, it just ran
tlapm
against each file and printed out the path if it returned a nonzero error code.The text was updated successfully, but these errors were encountered: