We are searching for verifiers that:
i <= MAXINT
for int i
)Tool | (1.1) | (1.2) | (2.1) | (2.2) |
---|---|---|---|---|
71 | 2474 | Yes | No | |
39 | 3699 | Yes | No | |
cbmc | 150 | 2659 | No | Yes |
cpa-seq | 0 | 0 | Yes | Yes |
67 | 3161 | Yes | No | |
327 | 796 | Yes | No | |
gacal | 30 | 4040 | Yes^2 | Yes |
259 | 3673 | Yes | No | |
174 | 1550 | No | No | |
28 | 2 | No | No | |
204 | 1159 | No | No | |
UAutomizer | 216 | 894 | Yes^1 | Yes |
UKojak | 38 | 1938 | Yes^1 | Yes |
UTaipan | 69 | 1291 | Yes^1 | Yes |
VeriAbs | 897 | 87 | Yes | Sometimes |
214 | 1661 | No | No |
1: The Ultimate Framework produces witnesses that CPAchecker can not parse (several witness-automaton transitions for a single statement). This issue can be (and is) circumvented with a post-processing step that merges all witness-automaton transitions for a single statement into one transition.
2: CPAchecker can not parse any of the witnesses of GACAL.
Comments to each verifier:
2LS: Trivial invariant witnesses, only describe some path, but no invariants.
BRICK: Trivial, single-state invariant witnesses.
CBMC: Encodes internal, termporary variables in invariant witnesses. Sometimes invariants are only variable assignments, sometimes more complicated invariants like relations between variables.
CPA-Seq: Good, of course ;-)
DIVINE: trivial, single-state witnesses
ESBMC: trivial, single-state witnesses
GACAL (only ReachSafety-Loops): Really nice invariants. Unfortunately CPAchecker seems to have issues with them.
Map2Check: trivial, single-state witnesses
Pinaka: Does only generate trivial invariant witnesses. Does not give any incorrect answer.
PredatorHP (only ReachSafty-Heap): Does only generate trivial invariant witnesses. Does not give any incorrect answer.
Symbiotic: Does only generate trivial invariant witnesses. Sometimes (16/4079) true is returned, although the property is violated.
UAutomizer: Generates correct C invariant witnesses with meaningful invariants.
UKojak: Does not give any incorrect answer.
UTaipan: Same as for UAutomizer
VeriAbs: Answers often correct, but many invariant witnesses are either trivial or do not contain relevant information. Not usable because of strict license.
VeriFuzz: Does not produce invariant witnesses.