Add EnumerationTask and related classes - #1086
ThomasHaas wants to merge 11 commits into
Conversation
e69d2e3 to
a5fda59
Compare
I haven't test it, but seeing a new option and no changes to the relection file, it might be the case the options does not work in native. Also, if the option is in a new class, it will not be shown in the help. I will add (in another PR) some test so make sure we do not miss this situation anymore.
Done. Many of the tests will fail, but this does not necessarily mean the exploraiton is wrong. I generated the expected results using the cat files in herd's repo, thus there might be a missmatch with our cat models. But if this is the case, we should figure out how and why the models differ. |
29ca8ca to
2043bf7
Compare
Performance comparisonLinux x64Benchmark detailsMemory model: vmm
Memory model: aarch64
Memory model: power
Total
4 benchmark(s) omitted because both averages were below 5 seconds. macOS ARM64Benchmark detailsMemory model: vmm
Memory model: aarch64
Memory model: power
Total
|
|
From local testing, we still have 41 test failures. One of them times out due to OOTA. |
|
I extracted a litmus test on which herd7 and Dartagnan disagree under It looks like a release-acquire chain interrupted by an RMW. Looking at the |
|
Dartagnan's |
|
That's a good point. EDIT: Replacing |
2a7548a to
21686a7
Compare
6f6473d to
0ea4e21
Compare
|
@hernanponcedeleon Except for the one timeout due to OOTA, I think all remaining failing tests are due to the explicitly mentioned
|
|
The verdict on |
0ea4e21 to
5050a8c
Compare
Implementing this should not be hard, right? We just need to parse the locations/registers in this list, store them in the program as some "metadata", and compute the notion of state not only based on the variables of the spec, but rather the union of those with the ones computed here.
can you explain me why the "bug" is gone? |
Just as "metadata" is a bit problematic, but yeah, we need to store the list somewhere similar to how we store the spec.
The |
EnumerationTaskrepresents the task of enumerating final states. Currently, limited to litmus code.--mode={verification, enumeration}to select the type of task to solve.Possible TODOs:
EnumerationSolverwithAssumeSolver: they share a lot of code.--mode=verification/enumerationto the shorter--mode=verify/enumerate?