1/41
An Introduction to Satisfjability Modulo Theories
Philipp Rümmer Uppsala University
Philipp.Ruemmer@it.uu.se
An Introduction to Satisfjability Modulo Theories Philipp Rmmer - - PowerPoint PPT Presentation
An Introduction to Satisfjability Modulo Theories Philipp Rmmer Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020 1/41 Outline From theory ... From DPLL to DPLL(T) Slides courtesy of Alberto Griggio,
1/41
Philipp.Ruemmer@it.uu.se
2/41
http://www.cs.nyu.edu/~barrett/summerschool/griggio.pdf
3/41
4/41
i = 0; x = j; while (i < 50) { i++; x++; } if (j == 0) assert (x >= 50);
5/41
6/41
7/41
8/41
9/41
10/41
11/41
12/41
13/41
14/41
15
Princess Z3 UppSAT mcBV Norn ePrincess Ostrich Ostrich+ TRAU Sloth Z3-TRAU TRAU+
16
Princess Z3 UppSAT mcBV Norn ePrincess
Just contributing ... Ostrich Ostrich+ TRAU Sloth Z3-TRAU TRAU+
17
Princess Z3 UppSAT mcBV Norn ePrincess Ostrich Ostrich+ TRAU Sloth Z3-TRAU TRAU+
18
Princess Z3 UppSAT mcBV Norn ePrincess Ostrich Ostrich+ TRAU Sloth Z3-TRAU TRAU+
19
Princess Z3 UppSAT mcBV Norn ePrincess
Ostrich Ostrich+ TRAU Sloth Z3-TRAU TRAU+
20/41
21/41
22/41
23/41
24/41
25/41
26/41
27/41
28/41
29/41
30/41
31/41
32/41
(set-option :pp.bv-literals false) (declare-const x0 (_ BitVec 32)) (declare-const y0 (_ BitVec 32)) (declare-const x1 (_ BitVec 32)) (declare-const y1 (_ BitVec 32)) (assert (= x1 (bvmul x0 x0))) (assert (= y1 (bvadd x1 (_ bv1 32)))) (assert (not (bvsgt y1 (_ bv0 32)))) (check-sat) (get-model)
33/41
34/41
In compilers, this is called “Single Static Assignment” form (SSA)
35/41
36/41
(set-option :pp.bv-literals false) (declare-const x0 (_ BitVec 32)) (declare-const y0 (_ BitVec 32)) (declare-const y1a (_ BitVec 32)) (declare-const y1b (_ BitVec 32)) (declare-const y2 (_ BitVec 32)) (declare-const b Bool) (assert (= b (bvsgt x0 (_ bv0 32)))) (assert (=> b (= y1a x0))) (assert (=> (not b) (= y1b (bvneg x0)))) (assert (= y2 (ite b y1a y1b))) (assert (not (bvsge y2 (_ bv0 32)))) (check-sat) (get-model)
37/41
38/41
39/41
40/41
41/41