Leonardo de Moura Microsoft Research

100
Satisfiability Modulo Theories (SMT): ideas and applications Università Degli Studi Di Milano Scuola di Dottorato in Informatica, 2010 Leonardo de Moura Microsoft Research

description

Satisfiability Modulo Theories (SMT): ideas and applications Universit à Degli Studi Di Milano Scuola di Dottorato in Informatica, 2010. Leonardo de Moura Microsoft Research. Software development crisis. Software malfunction is a common problem. Software complexity is increasing. - PowerPoint PPT Presentation

Transcript of Leonardo de Moura Microsoft Research

Page 1: Leonardo de Moura Microsoft Research

Satisfiability Modulo Theories (SMT): ideas and applicationsUniversità Degli Studi Di MilanoScuola di Dottorato in Informatica, 2010

Leonardo de MouraMicrosoft Research

Page 2: Leonardo de Moura Microsoft Research

Software development crisis

Software malfunction is a common problem.

Software complexity is increasing.

We need new methods and tools.

Page 3: Leonardo de Moura Microsoft Research

Program correctness

I proved my program to be correct.

What does it mean?

Page 4: Leonardo de Moura Microsoft Research

Software models

We need models and tools to reason about them?

Does my model/software has property X?

Page 5: Leonardo de Moura Microsoft Research

Symbolic Reasoning

Verification/Analysis tools need some form of

Symbolic Reasoning

Page 6: Leonardo de Moura Microsoft Research

Symbolic Reasoning

PSpace-complete(QBF)

Semi-decidable(First-order logic)

NP-complete(Propositional logic)

NEXPTime-complete(EPR)

P-time(Equality)

Logic is “The Calculus of Computer Science” (Z. Manna).High computational complexity

Undecidable(FOL + LA)

Page 7: Leonardo de Moura Microsoft Research

Applications

Test case generation

Verifying Compilers

Predicate Abstraction

Invariant Generation

Type Checking

Model Based Testing

Page 8: Leonardo de Moura Microsoft Research

Some Applications @ Microsoft

VCC

Hyper-VTerminator T-2

NModel

HAVOC

F7SAGE

VigilanteSpecExplorer

Page 9: Leonardo de Moura Microsoft Research

Test case generation

unsigned GCD(x, y) {

requires(y > 0);

while (true) {unsigned m = x % y; if (m == 0) return y; x = y; y = m;

}}

We want a trace where the loop is executed twice.

(y0 > 0) and

(m0 = x0 % y0) and

not (m0 = 0) and

(x1 = y0) and

(y1 = m0) and

(m1 = x1 % y1) and

(m1 = 0)

Solver

x0 = 2y0 =

4m0 =

2x1 = 4y1 = 2m1 =

0

SSA

Page 10: Leonardo de Moura Microsoft Research

Type checking

Signature:div : int, { x : int | x 0 } int

SubtypeCall site:if a 1 and a b then

return div(a, b)Verification conditiona 1 and a b implies b 0

Page 11: Leonardo de Moura Microsoft Research

What is logic?Logic is the art and science of effective reasoning.How can we draw general and reliable conclusions from a collection of facts?Formal logic: Precise, syntactic characterizations of well-formed expressions and valid deductions.Formal logic makes it possible to calculate consequences at the symbolic level.

Computers can be used to automate such symbolic calculations.

Page 12: Leonardo de Moura Microsoft Research

What is logic?Logic studies the relationship between language, meaning, and (proof) method. A logic consists of a language in which (well-formed) sentences are expressed. A semantic that distinguishes the valid sentences from the refutable ones.A proof system for constructing arguments justifying valid sentences.Examples of logics include propositional logic, equational logic, first-order logic, higher-order logic, and modal logics.

Page 13: Leonardo de Moura Microsoft Research

What is logical language?A language consists of logical symbols whose interpretations are fixed, and non-logical ones whose interpretations vary. These symbols are combined together to form well-formed formulas.In propositional logic PL, the connectives , , and have a fixed interpretation, whereas the constants p, q, r may be interpreted at will.

Page 14: Leonardo de Moura Microsoft Research

Propositional Logic

Formulas: := p | 1 2 | 1 2 | 1 | 1 2

Examples:p q q pp q (p q)

We say p and q are propositional variables.

Exercise: Using a programming language, define a representation for formulas and a checker for well-formed formulas.

Page 15: Leonardo de Moura Microsoft Research

Interpretation

Page 16: Leonardo de Moura Microsoft Research

Satisfiability & ValidityA formula is satisfiable if it has an interpretation that makes it logically true. In this case, we say the interpretation is a model.A formula is unsatisfiable if it does not have any model.A formula is valid if it is logically true in any interpretation.A propositional formula is valid if and only if its negation is unsatisfiable.

Page 17: Leonardo de Moura Microsoft Research

Satisfiability & Validity: examplesp q q p

p q q

p q (p q)

Page 18: Leonardo de Moura Microsoft Research

Satisfiability & Validity: examplesp q q p VALID

p q q SATISFIABLE

p q (p q) UNSATISFIABLE

Page 19: Leonardo de Moura Microsoft Research

Equivalence

Page 20: Leonardo de Moura Microsoft Research

Equisatisfiable

We say formulas A and B are equisatisfiable if and only if A is satisfiable if and only if B is.

During this course, we will describe transformations that preserve equivalence and equisatisfiability.

Page 21: Leonardo de Moura Microsoft Research

Normal Forms

Page 22: Leonardo de Moura Microsoft Research

Normal FormsNNF?(p q) (q (r p))

Page 23: Leonardo de Moura Microsoft Research

Normal FormsNNF? NO(p q) (q (r p))

Page 24: Leonardo de Moura Microsoft Research

Normal FormsNNF? NO(p q) (q (r p))

Page 25: Leonardo de Moura Microsoft Research

Normal FormsNNF? NO(p q) (q (r p))(p q) (q (r p))

Page 26: Leonardo de Moura Microsoft Research

Normal FormsNNF? NO(p q) (q (r p))(p q) (q (r p))(p q) (q (r p))

Page 27: Leonardo de Moura Microsoft Research

Normal FormsCNF?((p s) (q r)) (q p s) (r s)

Page 28: Leonardo de Moura Microsoft Research

Normal FormsCNF? NO((p s) (q r)) (q p s) (r s)

Page 29: Leonardo de Moura Microsoft Research

Normal FormsCNF? NO((p s) (q r)) (q p s) (r s)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)

Page 30: Leonardo de Moura Microsoft Research

Normal FormsCNF? NO((p s) (q r)) (q p s) (r s)((p s) q)) ((p s) r)) (q p s) (r s)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)

Page 31: Leonardo de Moura Microsoft Research

Normal FormsCNF? NO((p s) (q r)) (q p s) (r s)((p s) q)) ((p s) r)) (q p s) (r s)(p q) (s q) ((p s) r)) (q p s) (r s)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)

Page 32: Leonardo de Moura Microsoft Research

Normal FormsCNF? NO((p s) (q r)) (q p s) (r s)((p s) q)) ((p s) r)) (q p s) (r s)(p q) (s q) ((p s) r)) (q p s) (r s)(p q) (s q) (p r) (s r) (q p s) (r s)

Page 33: Leonardo de Moura Microsoft Research

Normal FormsDNF? p (p q) (q r)

Page 34: Leonardo de Moura Microsoft Research

Normal FormsDNF? NO, actually this formula is in CNF p (p q) (q r)

Page 35: Leonardo de Moura Microsoft Research

Normal FormsDNF? NO, actually this formula is in CNF p (p q) (q r)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)

Page 36: Leonardo de Moura Microsoft Research

Normal FormsDNF? NO, actually this formula is in CNF p (p q) (q r)((p p) (p q)) (q r)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)

Page 37: Leonardo de Moura Microsoft Research

Normal FormsDNF? NO, actually this formula is in CNF p (p q) (q r)((p p) (p q)) (q r)(p q) (q r)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)Other Rules1. AA 2. A A

Page 38: Leonardo de Moura Microsoft Research

Normal FormsDNF? NO, actually this formula is in CNF p (p q) (q r)((p p) (p q)) (q r)(p q) (q r)((p q) q) ((p q) r)

Distributivity 1. A(BC) (AB)(AC)2. A(BC) (AB)(AC)Other Rules1. AA 2. A A

Page 39: Leonardo de Moura Microsoft Research

Normal FormsDNF? NO, actually this formula is in CNF p (p q) (q r)((p p) (p q)) (q r)(p q) (q r)((p q) q) ((p q) r)(p q) (q q) ((p q) r)(p q) (p r) (q r)

Page 40: Leonardo de Moura Microsoft Research

Refutation Decision Procedures

Page 41: Leonardo de Moura Microsoft Research

Inference Systems for Decision Procedures

Rules preserve satisfiability.

Page 42: Leonardo de Moura Microsoft Research

Truth Table

Page 43: Leonardo de Moura Microsoft Research

Truth Table (example)

Page 44: Leonardo de Moura Microsoft Research

Semantic Tableaux

Page 45: Leonardo de Moura Microsoft Research

Semantic Tableaux (example)

Page 46: Leonardo de Moura Microsoft Research

Semantic Tableaux (cont.)

Page 47: Leonardo de Moura Microsoft Research

Semantic Tableaux (cont.)

Page 48: Leonardo de Moura Microsoft Research

Semantic Tableaux + Bivalence

Page 49: Leonardo de Moura Microsoft Research

CNF (again)

Page 50: Leonardo de Moura Microsoft Research

CNF (again)

Page 51: Leonardo de Moura Microsoft Research

CNF (again)

Page 52: Leonardo de Moura Microsoft Research

CNF translation (example)

Page 53: Leonardo de Moura Microsoft Research

Semantic Trees

Page 54: Leonardo de Moura Microsoft Research

Resolution

Page 55: Leonardo de Moura Microsoft Research

Resolution (example)

Page 56: Leonardo de Moura Microsoft Research

Completeness of Resolution

Page 57: Leonardo de Moura Microsoft Research

Completeness of Resolution

Page 58: Leonardo de Moura Microsoft Research

Subsumption

Page 59: Leonardo de Moura Microsoft Research

Unit & Input Resolution

Page 60: Leonardo de Moura Microsoft Research

Horn Clauses

Page 61: Leonardo de Moura Microsoft Research

Semantic Resolution

Page 62: Leonardo de Moura Microsoft Research

Semantic Resolution (example)

Page 63: Leonardo de Moura Microsoft Research

Semantic Resolution (special cases)

Page 64: Leonardo de Moura Microsoft Research

DPLL

DPLL

Page 65: Leonardo de Moura Microsoft Research

Pure LiteralsA literal is pure if only occurs positively or negatively.

Page 66: Leonardo de Moura Microsoft Research

Pure LiteralsA literal is pure if only occurs positively or negatively.

Page 67: Leonardo de Moura Microsoft Research

DPLL (as a procedure)

Page 68: Leonardo de Moura Microsoft Research

DPLL (example)

Page 69: Leonardo de Moura Microsoft Research

DPLL (example)

Page 70: Leonardo de Moura Microsoft Research

DPLL (example)

Page 71: Leonardo de Moura Microsoft Research

DPLL (example)

Page 72: Leonardo de Moura Microsoft Research

DPLL (example)

Page 73: Leonardo de Moura Microsoft Research

DPLL (example)

Page 74: Leonardo de Moura Microsoft Research

DPLL (example)

Page 75: Leonardo de Moura Microsoft Research

DPLL (example)

Page 76: Leonardo de Moura Microsoft Research

Some Applications

Page 77: Leonardo de Moura Microsoft Research

Bit-vector / Machine arithmeticLet x, y and z be 8-bit (unsigned) integers.

Is x > 0 y > 0 z = x + y z > 0 valid?

Is x > 0 y > 0 z = x + y (z > 0) satisfiable?

Page 78: Leonardo de Moura Microsoft Research

Bit-vector / Machine arithmeticWe can encode bit-vector satisfiability problems in propositional logic.

Idea 1:Use n propositional variables to encode n-bit integers.

x (x1, …, xn)

Idea 2:Encode arithmetic operations using hardware circuits.

Page 79: Leonardo de Moura Microsoft Research

Encoding equalityp q is equivalent to (p q) (q p)

The bit-vector equation x = y is encoded as:(x1 y1) … (xn yn)

Page 80: Leonardo de Moura Microsoft Research

Encoding additionWe use (r1, …, rn) to store the result of x + y

p xor q is defined as (p q)

xor is the 1-bit adder

p q p xor q p q0 0 0 01 0 1 00 1 1 01 1 0 1

carry

Page 81: Leonardo de Moura Microsoft Research

Encoding 1-bit full adder1-bit full adder

Three inputs: x, y, cin

Two outputs: r, cout x y cin r = x xor y xor

cin

cout = (x y)(x cin)(y cin)

0 0 0 0 01 0 0 1 00 1 0 1 01 1 0 0 10 0 1 1 01 0 1 0 10 1 1 0 11 1 1 1 1

Page 82: Leonardo de Moura Microsoft Research

Encoding n-bit adderWe use (r1, …, rn) to store the result of x + y,and (c1, …, cn)

r1 (x1 xor y1)c1 (x1 y1)r2 (x2 xor y2 xor c1)c2 (x2 y2) (x2 c1) (y2 c1)…rn (xn xor yn xor cn-1)cn (xn yn) (xn cn-1) (yn cn-1)

Page 83: Leonardo de Moura Microsoft Research

Exercises1) Encode x * y2) Encode x > y (signed and unsigned versions)

Page 84: Leonardo de Moura Microsoft Research

Test case generation (again)

unsigned GCD(x, y) {

requires(y > 0);

while (true) {unsigned m = x % y; if (m == 0) return y; x = y; y = m;

}}

We want a trace where the loop is executed twice.

(y0 > 0) and

(m0 = x0 % y0) and

not (m0 = 0) and

(x1 = y0) and

(y1 = m0) and

(m1 = x1 % y1) and

(m1 = 0)

Solver

x0 = 2y0 =

4m0 =

2x1 = 4y1 = 2m1 =

0

SSA

Page 85: Leonardo de Moura Microsoft Research

Bounded Model Checkers

Page 86: Leonardo de Moura Microsoft Research

Transition Systems

Page 87: Leonardo de Moura Microsoft Research

Transition Systems (cont.)

Page 88: Leonardo de Moura Microsoft Research

Invariants

Page 89: Leonardo de Moura Microsoft Research

Bounded Model Checking: Invariants

Page 90: Leonardo de Moura Microsoft Research

Bounded Model Checking: Invariants

Page 91: Leonardo de Moura Microsoft Research

Bounded Model Checking (cont.)

Page 92: Leonardo de Moura Microsoft Research

Recurrence diameter

Page 93: Leonardo de Moura Microsoft Research

Verifying Invariants

Page 94: Leonardo de Moura Microsoft Research

Verifying Invariants: k-induction

Page 95: Leonardo de Moura Microsoft Research

Verifying Invariants: k-induction (cont.)

Page 96: Leonardo de Moura Microsoft Research

Verifying Invariants: k-induction (cont.)

Page 97: Leonardo de Moura Microsoft Research

Experimental Exercises

Page 98: Leonardo de Moura Microsoft Research

Available SAT Solvers

Page 99: Leonardo de Moura Microsoft Research

Available Examples

Satisfiability library: http://www.satlib.orgThe SAT competion: http://www.satcompetition.orgSearch the WEB: “SAT benchmarks”

Page 100: Leonardo de Moura Microsoft Research

Using SAT solvers