Commit 8fdb8bb
committed
SMT back-end: add support for Bitwuzla and CVC 5
Adds support for two actively developed SMT solvers, with the caveat
that these do not currently pass all regression tests (Bitwuzla fails
two tests, CVC 5 times out on one and fails on nine others). Some
performance data running (in `regression/cbmc`, for varying values of
`<SOLVER>`):
```
/usr/bin/time -v ../test.pl -e -c "../../../build/bin/cbmc <SOLVER>" \
-X broken-smt-backend -X thorough-smt-backend \
-X broken-cprover-smt-backend -X thorough-cprover-smt-backend \
-X broken-z3-smt-backend -X thorough-z3-smt-backend
```
Note that the following data has bias: it only has the subset of tests
that all back-ends are expected to be able to solve. That is, some SMT
solver may be faster on this minimum common set of tests, but might be
unable to solve tests that another (possibly slower) solver can handle.
* Bitwuzla (`--bitwuzla` for `<SOLVER>`):
```
User time (seconds): 90.59
System time (seconds): 8.68
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:39.31
Maximum resident set size (kbytes): 81240
Exit status: 2
```
* CVC 5 (`--cvc5` for `<SOLVER>`):
```
User time (seconds): 483.24
System time (seconds): 10.69
Elapsed (wall clock) time (h:mm:ss or m:ss): 8:14.18
Maximum resident set size (kbytes): 473876
Exit status: 10
```
* Z3 (`--z3` for `<SOLVER>`):
```
User time (seconds): 202.90
System time (seconds): 11.29
Elapsed (wall clock) time (h:mm:ss or m:ss): 3:34.21
Maximum resident set size (kbytes): 131760
Exit status: 0
```
* In-tree SMT solver (`--cprover-smt2` for `<SOLVER>`):
```
User time (seconds): 64.08
System time (seconds): 9.44
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:13.51
Maximum resident set size (kbytes): 81932
Exit status: 0
```
* SAT back-end (omitting `<SOLVER>`):
```
User time (seconds): 33.43
System time (seconds): 7.94
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:41.29
Maximum resident set size (kbytes): 79088
Exit status: 0
```1 parent 3f578e1 commit 8fdb8bb
File tree
7 files changed
+64
-2
lines changed- doc/man
- src
- goto-checker
- solvers/smt2
7 files changed
+64
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
407 | 407 | | |
408 | 408 | | |
409 | 409 | | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
410 | 413 | | |
411 | 414 | | |
412 | 415 | | |
| |||
419 | 422 | | |
420 | 423 | | |
421 | 424 | | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
422 | 428 | | |
423 | 429 | | |
424 | 430 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
401 | 401 | | |
402 | 402 | | |
403 | 403 | | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
404 | 407 | | |
405 | 408 | | |
406 | 409 | | |
| |||
413 | 416 | | |
414 | 417 | | |
415 | 418 | | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
416 | 422 | | |
417 | 423 | | |
418 | 424 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
163 | 163 | | |
164 | 164 | | |
165 | 165 | | |
166 | | - | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
167 | 169 | | |
168 | 170 | | |
169 | 171 | | |
| |||
173 | 175 | | |
174 | 176 | | |
175 | 177 | | |
| 178 | + | |
| 179 | + | |
176 | 180 | | |
177 | 181 | | |
178 | 182 | | |
| |||
525 | 529 | | |
526 | 530 | | |
527 | 531 | | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
528 | 538 | | |
529 | 539 | | |
530 | 540 | | |
| |||
549 | 559 | | |
550 | 560 | | |
551 | 561 | | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
552 | 568 | | |
553 | 569 | | |
554 | 570 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
103 | | - | |
| 103 | + | |
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| 127 | + | |
127 | 128 | | |
128 | 129 | | |
129 | 130 | | |
130 | 131 | | |
| 132 | + | |
131 | 133 | | |
132 | 134 | | |
133 | 135 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
86 | 95 | | |
87 | 96 | | |
88 | 97 | | |
| |||
103 | 112 | | |
104 | 113 | | |
105 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
106 | 124 | | |
107 | 125 | | |
108 | 126 | | |
| |||
158 | 176 | | |
159 | 177 | | |
160 | 178 | | |
| 179 | + | |
161 | 180 | | |
162 | 181 | | |
163 | 182 | | |
164 | 183 | | |
165 | 184 | | |
| 185 | + | |
166 | 186 | | |
167 | 187 | | |
168 | 188 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| 47 | + | |
46 | 48 | | |
47 | 49 | | |
48 | 50 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
57 | 63 | | |
58 | 64 | | |
59 | 65 | | |
| |||
79 | 85 | | |
80 | 86 | | |
81 | 87 | | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
82 | 92 | | |
83 | 93 | | |
84 | 94 | | |
| |||
0 commit comments