-
Notifications
You must be signed in to change notification settings - Fork 197
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
Handle validation tasks inside CPAchecker #1078
base: main
Are you sure you want to change the base?
Handle validation tasks inside CPAchecker #1078
Conversation
…e, with an indication that it is a witness inside the options field See https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/blob/36ba9aa5c3f5d7b52c7f1431a2fff287ebc7e5d9/c/loop-invariants/linear-inequality-inv-a.yml for an example task
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I marked the PR as draft as long as the witness
option is still a proposal and not community agreed.
The PR should link to the documentation that has the definition of that option.
Thanks a lot for your comments! They have now been addressed. |
There are several tool-info modules that build on top of the tool-info module of CPAchecker. Most of them do not override |
…ot passed through it, but instead through the additional options
Thanks a lot for pointing this out! Just went through all the different tools which use CPAchecker's tool info module. Only CPA-witness2test had to be adjusted, the others should not be affected. MetaVal also needs to be adapated, but that will be a problem for another PR. |
Hm, but now
Hm, what does that mean? How will the tool-info module behave in the meantime? It should still continue work for existing users. |
With the latest commit it fails again if there is more than one non-witness file.
Currently it will simply not work for the proposed validation task files. It will continue working as intended with the current way of validating witnesses. |
Ok, this is good to hear. What happens if someone passes a new task-definition file with the I think it would be good if we keep it such that every tool-info modules either fully supports some option, or ignores its existence completely. That is the least confusing for users. Otherwise we would have three different behaviors of the Metaval tool-info module for validation tasks: in old versions of BenchExec it just ignores the |
Currently MetaVal will just not work for the validation task definition format, since it ignores the
I agree that keeping the behavior of validators consistent is important, but IMO this issue is orthogonal to this PR, since all validators will need to be adjusted in order to work with the validation format and handle the new option correctly. If I understood your proposal correctly, for the next release of BenchExec all validators should have adapted their tool-info module such that there is a specific version of BenchExec from which the validation task definition files start working and previously the |
But not if I use an appropriate benchmark definition that includes the necessary options for witnesses (just as in the previous years), wouldn't it?
No, I never said this. I said that every tool-info modules should either support the option or ignore it completely. But I don't want that tool-info module X ignores option Y in versions A, B, C, does something that is broken in versions D and E, and fully supports option Y in versions F and beyond. Of course it would be nice for users if "there is a specific version of BenchExec from which the validation task definition files start working and previously the |
Exactly
I see, then I somewhat misunderstood your comment. But I completely agree with you on this. |
Then we should ensure that this PR does not cause a regression for this situation (new task definition with appropriate benchmark definition with manually defined options for Metaval). |
Looking at the tool info module of MetaVal a regression should not occur due to thi PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can be merged once the community has agreed on and finalized the specification of the new option in the task-definition files. Would be nice to add a link to the spec to the code once this happens.
The goal of this MR is to handle validation tasks following the proposed format in SV-Benchmarks. A short description of the new option is given in the SV-Benchmarks README
The goal is to leave the previous behavior of CPAchecker untouched i.e. it still being able to validate witnesses given explicitly through extra parameters in a benchmark definition file. If both ways to pass witnesses, through the task-definition and through the benchmark file, are used then CPAchecker fails with an error, as should be expected.