50
1/50 An Introduction to Satisfiability Modulo Theories Philipp Rümmer Uppsala University [email protected] February 9, 2021

An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University [email protected] February 11, 2020. 2/41

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

1/50

An Introduction to Satisfiability Modulo Theories

Philipp RümmerUppsala University

[email protected]

February 9, 2021

Page 2: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

2/50

Outline

● From theory ...● From DPLL to DPLL(T)● Slides courtesy of Alberto Griggio

● … to practice● SMT-LIB and some common theories● http://rise4fun.com/z3● https://cvc4.github.io/app● http://logicrunch.it.uu.se:4096/~wv/princess/

Page 3: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

3/50

Typical Applications of SMT

● Deductive program verification● Correctness of contracts, invariants

● Testing, symbolic execution● Path feasibility

● Bounded model checking● Reachability of errors within k steps

● Model checking● Finite-state abstraction of programs

Page 4: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

4/50

Broader Applications

i = 0;x = j;while (i < 50) { i++; x++;}if (j == 0) assert (x >= 50);

Page 5: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

5/50

ATP and SMT

Page 6: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

6/50

ATP and SMT

”Big Engines

of Proof”

ATP: Classical methods:

Resolution,Superposition,Tableaux,Model Evolution, etc.

Page 7: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

7/50

ATP and SMT

”Big Engines

of Proof”

“little engines”

ATP: Classical methods:

Resolution,Superposition,Tableaux,Model Evolution, etc.

SMT: Collaborative meth.:

Propositional → SATLin. arithmetic → SimplexFunctions → EUF

...

Page 8: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

8/50

ATP and SMT

”Big Engines

of Proof”

“little engines”

ATP: Classical methods:

Resolution,Superposition,Tableaux,Model Evolution, etc.

SMT: Collaborative meth.:

Propositional → SATLin. arithmetic → SimplexFunctions → EUF

...

?

Page 9: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

9/50

SAT and SMT

Def.: SAT Solver

Input: Propositional formula Cin n variables

Output: C sat + satisfying assignment (model)C unsat [+ Proof]

Def.: SAT Modulo Theories Solver

Input: First-order formula Cin n variables and theories T1, …, Tm

Output: C sat + satisfying assignment (model)C unsat [+ Proof]

Page 10: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

10/50

SAT and SMT

Def.: SAT Solver

Input: Propositional formula Cin n variables

Output: C sat + satisfying assignment (model)C unsat [+ Proof]

Def.: SAT Modulo Theories Solver

Input: First-order formula Cin n variables and theories T1, …, Tm

Output: C sat + satisfying assignment (model)C unsat [+ Proof]

Also called asolution

Page 11: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

11/50

We know how to …

Solve Boolean formulas efficiently:● DPLL, CDLL● Implemented in SAT solvers

Solve conjunctive constr. efficiently:● Linear arithmetic: LP, ILP, MIP● Finite domains: CP, local search● etc.

Page 12: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

12/50

We know how to …

Solve Boolean formulas efficiently:● DPLL, CDLL● Implemented in SAT solvers

Solve conjunctive constr. efficiently:● Linear arithmetic: LP, ILP, MIP● Finite domains: CP, local search● etc.

???

Page 13: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

13/50

Example!

Page 14: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

14/50

Eager SMT

● Wide range of data-types can directly be encoded in propositional logic:

● Bit-vectors/machine arithmetic● Equality logic● Integer arithmetic (how?)

● Approach pioneered by UCLID (2004)● Today mostly used for bit-vectors

Page 15: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

15/50

Lazy, Offline SMT

● Construct a Boolean skeleton of a formula, and solve it using SAT

● UNSAT → Finished!● SAT → Check consistency of

assigned theory literals→ Produce a model or

refine skeleton

Page 16: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

16/50

Lazy, Offline SMT

Satisfying assignment

Conflict clausesSAT

Formula

Theory Solver(s)

UNSAT

SAT Solver

Boolean Skeleton

Page 17: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

17/50

Lazy, Online SMT

● Tightly interleave/integrateBoolean and theory reasoning

● SAT solver informs theory solvers each time a literal is asserted→ incremental theory solving

● Theory solver informs SAT solver about implied literals

● + Some further refinements● Formalised in the DPLL(T) algorithm

[Nieuwenhuis, Oliveras, Tinelli, 2006]

Page 18: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

18/50

The DPLL(T) LoopInform about literalsAssert literals (decision/propagation)Check conjunction of asserted literalsBacktrack

Conflict setsImplied literals

Formula

Theory Solver(s)

SAT/UNSAT

DPLL(T) Solver

Boolean Skeleton

Page 19: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

19/50

Some SMT solvers

● Z3● CVC4● MathSAT● Yices● OpenSMT● Boolector● SMTInterpol

Page 20: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

20

SMT in Uppsala

Princess

Z3

UppSAT

mcBV

Norn

ePrincess

Ostrich Ostrich+

TRAU

Sloth

Z3-TRAU

TRAU+ EMU

Page 21: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

21

SMT in Uppsala

Princess

Z3

UppSAT

mcBV

Norn

ePrincess

General-purpose

Justcontributing ...

Ostrich Ostrich+

TRAU

Sloth

Z3-TRAU

TRAU+ EMU

Page 22: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

22

SMT in Uppsala

Princess

Z3

UppSAT

mcBV

Norn

ePrincess

Ostrich Ostrich+

TRAU

Sloth

Z3-TRAU

TRAU+

Stringsolvers

EMU

Page 23: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

23

SMT in Uppsala

Princess

Z3

UppSAT

mcBV

Norn

ePrincess

Ostrich Ostrich+

TRAU

Sloth

Z3-TRAU

TRAU+

First-order

EMU

Page 24: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

24

SMT in Uppsala

Princess

Z3

UppSAT

mcBV

Norn

ePrincess

Low-levelmachinearithmetic

Ostrich Ostrich+

TRAU

Sloth

Z3-TRAU

TRAU+ EMU

Page 25: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

25/50

Page 26: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

26/50

SMT-LIB

● Standardised interface for SMT solvers, supported by most tools

● Rich set of features, many theories● Comes with a large library of

benchmarks; yearly competitionSMT-COMP→ Organiser until 2018: Tjark Weber!

● http://www.smtlib.org

Page 27: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

27/50

Example 1

https://rise4fun.com/Z3

Page 28: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

28/50

In SMT-LIB

(set-logic QF_LIA)

(declare-const p Bool)(declare-const x Int)(declare-const y Int)(declare-const z Int)

(assert (or (> (- (* 2 y) z) 2) p))(assert (or (> (- (* 3 x) z) 6) (not p)))(assert (or (> (- (* 2 z) (* 4 y)) 5) p))(assert (or (not (> (- y z) 6)) (not p)))

(check-sat)(get-model)

Permalink: https://rise4fun.com/Z3/hf0G

Page 29: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

29/50

Important SMT-LIB commands

● (set-logic QF_BV)(set-option …)

● (declare-const b (_ BitVec 8))(declare-fun f ((x (_ BitVec 2))) Bool)

● (assert (= b #b10100011))

● (check-sat)

● (get-value (b)), (get-model)

● (get-unsat-core)

● (push 1), (pop 1)

● (reset), (exit)

Page 30: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

30/50

Important SMT-LIB commands

● (set-logic QF_BV)(set-option …)

● (declare-const b (_ BitVec 8))(declare-fun f ((x (_ BitVec 2))) Bool)

● (assert (= b #b10100011))

● (check-sat)

● (get-value (b)), (get-model)

● (get-unsat-core)

● (push 1), (pop 1)

● (reset), (exit)

Z3, and many solvers don't

care ...

Page 31: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

31/50

Important SMT-LIB commands

● (set-logic QF_BV)(set-option …)

● (declare-const b (_ BitVec 8))(declare-fun f ((x (_ BitVec 2))) Bool)

● (assert (= b #b10100011))

● (check-sat)

● (get-value (b)), (get-model)

● (get-unsat-core)

● (push 1), (pop 1)

● (reset), (exit)

Z3, and many solvers don't

care ...

In CP or MIP, thiswould be called

assume or constraint

Page 32: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

32/50

General SMT-LIB constructors

● (and …), (or …), (not …), (=> …)

● (= b c)

● (ite (= b c) #b101 #b011)

● (let ((a #b001) (b #b010)) (= a b))

● (exists ((x (_ BitVec 2))) (= #b101 x))(forall …)

● (! (= b c) :named X)

Page 33: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

33/50

Example 2

Page 34: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

34/50

Example 2

● Every 32bit number x that is a power of 2 has the property thatx & (x – 1) == 0

(and vice versa)

Page 35: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

35/50

Quantifying Satisfaction?

● SAT/SMT solvers check satisfiability:

● How to prove a universal property?

Page 36: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

36/50

Quantifying Satisfaction?

● SAT/SMT solvers check satisfiability:

● How to prove a universal property?

Page 37: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

37/50

Main SMT-LIB Bit-vector ops.http://smtlib.cs.uiowa.edu/logics-all.shtml#QF_BV

● (_ BitVec 8)

● #b1010, #xff2a, (_ bv42 32)

● (= (concat #b1010 #b0011) #b10100011)

● (= ((_ extract 1 3) #b10100011) #b010)

● Unary: bvnot, bvneg

● Binary: bvand, bvor, bvadd, bvmul, bvudiv, bvurem, bvshl, bvlshr

● (bvult #b0100 #b0110)

● And many more derived operators ...

Page 38: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

38/50

The assertion stack

● Holds both assertions and declarations, but no options

● Important for incremental use of solver● (push n) → add n new frames to

the stack● (pop n) → pop n frames from

the stack

Page 39: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

39/50

Typical Architecture

Queries

Answer(model, proof)

Verifier,model

checker,etc.

SAT/SMTsolver

Page 40: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

40/50

BMC: straight-line programs

int x, y;

x = x * x;y = x + 1;

assert(y > 0);

Page 41: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

41/50

BMC: straight-line programs

int x, y;

x = x * x;y = x + 1;

assert(y > 0);

(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)

Z3-specific

Signed comparison

Page 42: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

42/50

Modelling ofProgram Variables

● An SMT-LIB constant represents a single value

● Just like mathematical variables● Program variables

can be reassigned … howto model computations?

● Main idea: every assignment creates a new “version” of a variable

● x0/y0 vs. x1/y1 in example

Page 43: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

43/50

Modelling ofProgram Variables

● An SMT-LIB constant represents a single value

● Just like mathematical variables● Program variables

can be reassigned … howto model computations?

● Main idea: every assignment creates a new “version” of a variable

● x0/y0 vs. x1/y1 in example

In compilers, thisis called

“Single Static Assignment”form (SSA)

Page 44: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

44/50

BMC: conditional branching

int x, y;

if (x > 0) y = x;else y = -x;

assert(y >= 0);

Page 45: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

45/50

BMC: conditional branching

int x, y;

if (x > 0) y = x;else y = -x;

assert(y >= 0);

(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)

Page 46: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

46/50

Alternative method:path-wise exploration

int x, y

x > 0 !(x > 0)

y = -xy = x

assert(...)

Page 47: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

47/50

Alternative method:path-wise exploration

int x, y

x > 0 !(x > 0)

y = -xy = x

assert(...)

● Each query smaller, but possibly exponentially many paths

● Learning similar to CDCL can be used to avoid analysing all paths

Page 48: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

48/50

Conclusions

● Most important idea in this lecture:Lazy encoding of formulas to SAT

● SMT solvers are ...● Usually optimised for verification:

Good at proving unsat● Able to handle infinite domains:

Arithmetic, arrays, strings, etc.● Side-effect: restricted set of operators:

Capture decidable domains● Good at propositional reasoning

Page 49: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

49/50

Conclusions

● Most important idea in this lecture:Lazy encoding of formulas to SAT

● SMT solvers are ...● Usually optimised for verification:

Good at proving unsat● Able to handle infinite domains:

Arithmetic, arrays, strings, etc.● Side-effect: restricted set of operators:

Capture decidable domains● Good at propositional reasoning

Compare to relaxations

Page 50: An Introduction to Satisfiability ... - Uppsala Universityuser.it.uu.se/~pierref/courses/AD3/slides/SMT1.pdf · Uppsala University Philipp.Ruemmer@it.uu.se February 11, 2020. 2/41

50/50

Outlook

● Various further topics:● More theories: ADTs, floats, strings, etc.● Handling of quantifiers● Fixed-point computation● MaxSAT/MaxSMT● Optimising SMT

● More lecture slides:● http://ssa-school-2016.it.uu.se/● http://www.sc-square.org/CSA/school/● http://ssa-school-2018.cs.manchester.ac.uk/