CI: check proofs with --strict - #219
Conversation
tlapm exits 0 when a proof step carries no proof at all, since such steps generate no obligation. The proof job therefore passes over proofs that did not close. --strict (tlaplus/tlapm#278) reports these as exit 11. Measured against current master: of the 67 proof modules the job runs, 62 are unaffected by the flag. Five exit 11 because they contain steps stated without proof, and are checked without --strict in a separate step so the distinction stays visible rather than silently folded in. specifications/Paxos/Voting.tla specifications/PaxosHowToWinATuringAward/Voting.tla specifications/byzpaxos/PConProof.tla specifications/allocator/AllocatorImplementation_proof.tla specifications/MultiCarElevator/Elevator_proof.tla Signed-off-by: Vasilis Nasopoulos <vasilis_nasopoulos@hotmail.com>
|
@vasilisnasopoulos-stack Thank you for offering to help with these proofs! The omitted proof in The omitted proofs in |
Per @muenchnerkindl on the PR: the omissions in AllocatorImplementation and Elevator are blocked on prover limitations rather than left open by choice, so note which is which alongside the exclusions. Signed-off-by: Vasilis Nasopoulos <vasilis_nasopoulos@hotmail.com>
|
Thank you — that is a much better answer than I expected, and it changes how the exclusions should read. I had assumed the two larger ones might simply be unfinished. They are not: both are blocked on the prover rather than left open by choice. I have annotated the exclusion list accordingly ( Deferring On extending the PM to handle |
I'm afraid it requires touching too much, and the code base is quite delicate. That's why the issue has been delayed for so long. |
|
Understood, and thank you for saying so plainly — that is exactly what I was hoping to find out before starting rather than after. I have left the exclusion comments as they are, since they now record the reason in the workflow itself: the next person who wonders why those five are excluded will find your explanation rather than guessing. The PR is otherwise ready from my side. |
Follows up on tlaplus/CommunityModules#128, where @lemmy suggested the same change here.
tlapmexits 0 when a proof step carries no proof at all — such steps generate no obligation, so they never appear in the count and the job passes over a proof that did not close.--strict(tlaplus/tlapm#278) reports this as exit 11.I measured it against current
masterrather than assuming. Of the 67 proof modules this job runs, 62 are unaffected. Five change:--strictPaxos/Voting.tlaPaxosHowToWinATuringAward/Voting.tlabyzpaxos/PConProof.tlaallocator/AllocatorImplementation_proof.tlaMultiCarElevator/Elevator_proof.tla(
ewd998/EWD998_proof.tlawas a sixth until #218.)Rather than skip those five outright, they are checked in a separate step without the flag, mirroring the existing
SumSequence.tlaexclusion. That way they are still verified, and the list of proofs with open steps is visible in the workflow rather than implied.@muenchnerkindl noted on the other thread that most of these omissions are deliberate — teaching material where leaving the interesting step open is the point. Two of them do not obviously read that way to me, though:
allocator/AllocatorImplementation_proof.tla(195 obligations) andMultiCarElevator/Elevator_proof.tla(223). If either is unintentional I would be glad to look at it the way #218 went; if they are all deliberate, the split above is simply documentation.Measurement run, both invocations for all 67 modules: https://github.com/vasilisnasopoulos-stack/vortex-dse-cslot-proofs/actions/runs/30840318792