Draft: New subcategory: Termination concurrent
I want to introduce a new subcategory for the termination of concurrent programs. Therefore I tried to label the existing programs of ConcurrencySafety-Main.set
with a termination property. Since we recently got support for the termination of concurrent programs in ULTIMATE, I used the ULTIMATE result as the verdict (some simpler programs were labeled manually). You can find the results here (Note: All benchmarks in this run are labeled with true
, therefore the incorrect false results just mean that the program is not terminating).
- I excluded some folders from
ConcurrencySafety-Main.set
, namely those where every program does not containfor
orwhile
or where ULTIMATE does not provide any result at all. I created a new set-fileTermination-Concurrent.set
for those categories. - Previously exactly one concurrent benchmark was labeled with a termination property (
pthread-atomic/gcd-2.yml
) and was in the set-fileTermination-Other.set
. This property was incorrect, so I fixed it and the corresponding folder from the set-file (since it is now contained inTermination-Concurrent.set
). - Some of the labeled benchmarks do not contain any loops, so I am unsure, if we should keep or remove those.
- Some of the benchmarks might not be ideal for termination (they were made for safety of course), but we might add some more interesting benchmarks afterwards. This MR should just be starting point for this new subcategory.
Additionally I added some manual verdicts where ULTIMATE failed to provide a result. Here are some small explanations on these commits:
-
e3de70a2: ULTIMATE proved the same benchmarks with less threads (
airline-5.yml
andfloating_read-5.yml
) to be terminating. - 9fbb38ad: As the name suggests: These benchmarks contain no while-loops, only for-loops. This was found using some syntactic search.
-
0a6300a0 and 2df658e3: These benchmarks have the pattern
while (i<n) { s; i++; }
, wheres
does not modify the variablei
, nor does any other thread. -
49a6030a:
-
test-hard1.wvr.yml
: We were able to prove termination for a simplified version of the program. -
parallel-misc-5.wvr.yml
: This program does not terminate, since it does not reach its (almost "unguarded") error location
-
-
8ebfdfc6: All those benchmarks have the same pattern and we have proven a simplified version of those programs to be non-terminating. This is the case, if one of the
xi
has the value 2^31 at some point due to the overflow. - e6fd2d4e: We were able to prove non-termination for a simplified version of the program.
- e59d5c46: We were able to prove (non-)termination for simplified versions of those programs.
Edited by Frank Schüssele