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.