File tree Expand file tree Collapse file tree 2 files changed +45
-1
lines changed Expand file tree Collapse file tree 2 files changed +45
-1
lines changed Original file line number Diff line number Diff line change 31
31
[ Integration into Build Systems with goto-cc] ( goto-cc/ ) ,
32
32
[ Integration with Visual Studio builds] ( visual-studio/ )
33
33
34
- ## 10. [ The CPROVER API Reference] ( api/ )
34
+ ## 10. New SMT backend
35
+
36
+ [ New SMT2 incremental backend] ( smt2-incr/ )
37
+
38
+ ## 11. [ The CPROVER API Reference] ( api/ )
Original file line number Diff line number Diff line change
1
+ [ CPROVER Manual TOC] ( ../ )
2
+
3
+ ## Incremental SMT backend
4
+
5
+ CBMC comes with a solver-agnostic incremental SMT backend.
6
+
7
+ The SMT incremental backend supports the following ` C ` primitives:
8
+
9
+ - Bit vector arithmetics
10
+ - Pointers
11
+ - Arrays (support is currently incomplete)
12
+
13
+ Primitive not supported are:
14
+
15
+ - Floating point values and arithmetics
16
+ - Structs
17
+
18
+ Requirement to use the incremental SMT backend is to have a solver which accepts
19
+ SMTlib 2.6 incremental input from the standard input and that supports the
20
+ ` QF_AUFBV ` (Quantifier Free Array Uninterpreted Functions and Bit Vectors).
21
+
22
+ To use this functionality it is enough to add the argument
23
+ ` --incremental-smt2-solver <cmd> ` where ` <cmd> ` is the command to invoke the SMT
24
+ solver of choice using the interactive mode and accepting input from the
25
+ standard input.
26
+
27
+ Examples are:
28
+
29
+ 1 . ` --incremental-smt2-solver 'z3 -smt2 -in' ` to use the Z3 solver.
30
+ 2 . ` --incremental-smt2-solver 'cvc5 --lang=smtlib2.6 --incremental' ` to use the
31
+ CVC5 solver.
32
+
33
+ Note that the solver has to be user-supplied and CBMC does not come packaged
34
+ with any SMT solver, so the solver name must be in the ` PATH ` or an executable
35
+ with full path must be provided.
36
+
37
+ Also note that because of the partial array support, the ` --slice-formula `
38
+ argument must be passed to CBMC, so that unsupported part of the automatically
39
+ added preamble will be removed.
40
+
You can’t perform that action at this time.
0 commit comments