engineering dpll(t) + saturation ijcar 2008

53
Engineering DPLL(T) + Saturation IJCAR 2008 Leonardo de Moura and Nikolaj Bjørner Microsoft Research

Upload: caesar

Post on 16-Feb-2016

39 views

Category:

Documents


0 download

DESCRIPTION

Engineering DPLL(T) + Saturation IJCAR 2008. Leonardo de Moura and Nikolaj Bjørner Microsoft Research. Satisfiability Modulo Theories (SMT). Arithmetic Bit-vectors Arrays …. Satisfiability Modulo Theories (SMT). Uninterpreted Functions. Array Theory. Arithmetic. M | F. DPLL. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Engineering DPLL(T) + Saturation IJCAR 2008

Engineering DPLL(T) + SaturationIJCAR 2008

Leonardo de Moura and Nikolaj BjørnerMicrosoft Research

Page 2: Engineering DPLL(T) + Saturation IJCAR 2008

Satisfiability Modulo Theories (SMT)

Engineering DPLL(T) + Saturation

SAT

Theories

SMT

ArithmeticBit-vectorsArrays…

Page 3: Engineering DPLL(T) + Saturation IJCAR 2008

Satisfiability Modulo Theories (SMT)

Engineering DPLL(T) + Saturation

)1()2),3,,(((2 xyfyxawritereadfyx

ArithmeticArray TheoryUninterpreted Functions

Page 4: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL

M | F

Engineering DPLL(T) + Saturation

Partial model Set of clauses

Page 5: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL

Guessing

Engineering DPLL(T) + Saturation

p, q | p q, q r

p | p q, q r

Page 6: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL

Deducing

Engineering DPLL(T) + Saturation

p, s| p q, p s

p | p q, p s

Page 7: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL

Backtracking

Engineering DPLL(T) + Saturation

p, s| p q, s q, p q

p, s, q | p q, s q, p q

Page 8: Engineering DPLL(T) + Saturation IJCAR 2008

SMT = DPLL + Theories

Efficient decision procedures for conjunctions of ground atoms.

Engineering DPLL(T) + Saturation

a=b, a<5 | a=b f(a)=f(b), a < 5 a > 10

Examples:Congruence closureDual SimplexBellman-Ford…

Page 9: Engineering DPLL(T) + Saturation IJCAR 2008

Z3

Test case generation

BMC Predicate AbstractionVerifying

Compiler

SMT: many applications at MS...

Engineering DPLL(T) + Saturation

Z3

Test case generation

BMC Predicate AbstractionVerifying

Compiler

Page 10: Engineering DPLL(T) + Saturation IJCAR 2008

Verifying Compilers

A verifying compiler uses automated reasoning to check thecorrectness of a program that is compiles.

Correctness is specified by types, assertions, . . . and otherredundant annotations that accompany the program.

Tony Hoare 2004

Page 11: Engineering DPLL(T) + Saturation IJCAR 2008

V

Stat

ic pr

ogra

m v

erifi

er

(Boo

gie)

MSIL

Z3

V.C. generatorVerification condition

“correct” or list of errors

Spec# compiler

Spec#Verification architecture

C

Bytecode translator

C

Boogie

VCC HAVOC

Page 12: Engineering DPLL(T) + Saturation IJCAR 2008

Verification conditions: Structure

BIGand-or tree

(ground)

Axioms(non-ground)

Control & Data Flow

Page 13: Engineering DPLL(T) + Saturation IJCAR 2008

Main Challenge

Quantifiers, quantifiers, quantifiers, …Modeling the runtime h,o,f:

IsHeap(h) o ≠ null read(h, o, alloc) = tread(h,o, f) = null read(h, read(h,o,f),alloc)

= t

Engineering DPLL(T) + Saturation

Page 14: Engineering DPLL(T) + Saturation IJCAR 2008

Main Challenge

Quantifiers, quantifiers, quantifiers, …Modeling the runtimeFrame axioms o, f:

o ≠ null read(h0, o, alloc) = t read(h1,o,f) = read(h0,o,f) (o,f) M

Engineering DPLL(T) + Saturation

Page 15: Engineering DPLL(T) + Saturation IJCAR 2008

Main Challenge

Quantifiers, quantifiers, quantifiers, …Modeling the runtimeFrame axiomsUser provided assertions i,j: i j read(a,i) read(b,j)

Engineering DPLL(T) + Saturation

Page 16: Engineering DPLL(T) + Saturation IJCAR 2008

Main Challenge

Quantifiers, quantifiers, quantifiers, …Modeling the runtimeFrame axiomsUser provided assertionsTheories x: p(x,x) x,y,z: p(x,y), p(y,z) p(x,z) x,y: p(x,y), p(y,x) x = y

Engineering DPLL(T) + Saturation

Page 17: Engineering DPLL(T) + Saturation IJCAR 2008

Main Challenge

Quantifiers, quantifiers, quantifiers, …Modeling the runtimeFrame axiomsUser provided assertionsTheoriesSolver must be fast in satisfiable instances.

Engineering DPLL(T) + Saturation

We want to find bugs!

Page 18: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching & Quantifier instantiation

Engineering DPLL(T) + Saturation

SMT solvers use heuristic quantifier instantiation.E-matching (matching modulo equalities).Example: x: f(g(x)) = x { f(g(x)) }a = g(b), b = c,f(a) c Pattern

Page 19: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching & Quantifier instantiation

Engineering DPLL(T) + Saturation

SMT solvers use heuristic quantifier instantiation.E-matching (matching modulo equalities).Example: x: f(g(x)) = x { f(g(x)) }a = g(b), b = c,f(a) c

x=b f(g(b)) = b

Equalities and ground terms come from the partial model M: M | F

Page 20: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: why do we use it?

Engineering DPLL(T) + Saturation

Integrates smoothly with DPLL.Software verification problems are big & shallow.Decides useful theories:

ArraysPartial orders…

Page 21: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.x: p(x),x: not p(x)

Page 22: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns:x: f(g(x))=x { f(g(x)) }g(a) = c,g(b) = c,a b Pattern is too

restrictive

Page 23: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns:x: f(g(x))=x { g(x) }g(a) = c,g(b) = c,a b More “liberal”

pattern

Page 24: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns:x: f(g(x))=x { g(x) }g(a) = c,g(b) = c,a b,f(g(a)) = a,f(g(b)) = b a=b

Page 25: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns.Matching loops:x: f(x) = g(f(x)) {f(x)}x: g(x) = f(g(x)) {g(x)}f(a) = c

Page 26: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns.Matching loops:x: f(x) = g(f(x)) {f(x)}x: g(x) = f(g(x)) {g(x)}f(a) = cf(a) = g(f(a))

Page 27: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns.Matching loops:x: f(x) = g(f(x)) {f(x)}x: g(x) = f(g(x)) {g(x)}f(a) = cf(a) = g(f(a))g(f(a)) = f(g(f(a)))

Page 28: Engineering DPLL(T) + Saturation IJCAR 2008

E-matching: Limitations

Engineering DPLL(T) + Saturation

E-matching needs ground seeds.Bad user provided patterns.Matching loops.It is not refutationally complete.

Page 29: Engineering DPLL(T) + Saturation IJCAR 2008

Z3: Beyond E-matching

Engineering DPLL(T) + Saturation

Decidable fragments:EPR (this morning)Array property fragmentMore coming soon

DPLL(): DPLL + Saturation (this talk)

Page 30: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL()

Engineering DPLL(T) + Saturation

Tight integration: DPLL + Saturation solver.

BIGand-or tree

(ground)

Axioms(non-ground)

Saturation Solver

DPLL + Theories

Page 31: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL()

Engineering DPLL(T) + Saturation

Inference rule:

DPLL() is parametric.Examples:

ResolutionSuperposition calculus…

Page 32: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL()

Engineering DPLL(T) + Saturation

M | F

Partial model Set of clauses

Page 33: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Deduce I

Engineering DPLL(T) + Saturation

p(a) | p(a)q(a), x: p(x)r(x), x: p(x)s(x)

Page 34: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Deduce I

Engineering DPLL(T) + Saturation

p(a) | p(a)q(a), p(x)r(x), p(x)s(x)

Page 35: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Deduce I

Engineering DPLL(T) + Saturation

p(a) | p(a)q(a), p(x)r(x), p(x)s(x)

p(a) | p(a)q(a), p(x)r(x), p(x)s(x), r(x)s(x)

Resolution

Page 36: Engineering DPLL(T) + Saturation IJCAR 2008

Using ground atoms from M:M | F

Main issue: backtracking.Hypothetical clauses:

H C

DPLL(): Deduce II

Engineering DPLL(T) + Saturation

(regular) Clause

(hypothesis) Ground literals

Track literals from M used to derive C

Page 37: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Deduce II

Engineering DPLL(T) + Saturation

p(a) | p(a)q(a), p(x)r(x)

p(a) | p(a)q(a), p(x)r(x), p(a)r(a)

p(a), p(x)r(x)r(a)

Page 38: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Backtracking

Engineering DPLL(T) + Saturation

p(a), r(a) | p(a)q(a), p(a)r(a), p(a)r(a), …

Page 39: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Backtracking

Engineering DPLL(T) + Saturation

p(a), r(a) | p(a)q(a), p(a)r(a), p(a)r(a), …

p(a) is removed from M

p(a) | p(a)q(a), p(a)r(a), …

Page 40: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Hypothesis Elimination

Engineering DPLL(T) + Saturation

p(a), r(a) | p(a)q(a), p(a)r(a), p(a)r(a), …

p(a), r(a) | p(a)q(a), p(a)r(a), p(a)r(a), …

Page 41: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Improvement

Engineering DPLL(T) + Saturation

Saturation solver ignores non-unit ground clauses.

p(a) | p(a)q(a), p(x)r(x)

Page 42: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Improvement

Engineering DPLL(T) + Saturation

Saturation solver ignores non-unit ground clauses.It is still refutanionally complete if:

has the reduction property.

BIGand-or tree

(ground)

Axioms(non-ground)

Saturation Solver

DPLL + Theories

Page 43: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL +

Theories

Saturation

Solver

DPLL(): Improvement

Engineering DPLL(T) + Saturation

Saturation solver ignores non-unit ground clauses.It is still refutanionally complete if:

has the reduction property.

Ground literals

Ground clauses

Page 44: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Contraction rules

Engineering DPLL(T) + Saturation

Contraction rules are very important.Examples:

SubsumptionDemodulation…

Contraction rules with a single premise are easy.

Page 45: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Contraction rules

Engineering DPLL(T) + Saturation

Contraction rules with several premises.Example:p(a) r(x), r(x)s(x)

r(x) subsumes r(x)s(x)

Problem: p(a) r(x) can be deleted during backtracking.

Page 46: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Contraction rules

Engineering DPLL(T) + Saturation

Contraction rules with several premises.Example:p(a) r(x), r(x)s(x)

Naïve solution: use hypothesis elimination. p(a)r(x), r(x)s(x)

Page 47: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Contraction rules

Engineering DPLL(T) + Saturation

Contraction rules with several premises.Example:p(a) r(x), r(x)s(x)

Solution: disable r(x)s(x) until p(a) is removed from the partial model M.

Page 48: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Problems

Engineering DPLL(T) + Saturation

Interpreted symtbols (f(a) > 2), f(x) > 5

Solution: use E-matching for non-ground clauses containing interpreted symbols.

Disclaimer:Doesn’t occur very often

Page 49: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Problems

Engineering DPLL(T) + Saturation

Transitivity + monotonicity p(x,y) p(y,z) p(x,z) p(x,y) p(f(x), f(y))

No satisfactory solution yet.

Saturation engine diverges

Page 50: Engineering DPLL(T) + Saturation IJCAR 2008

DPLL(): Problems

Engineering DPLL(T) + Saturation

Ground equations (duplication of work)SuperpositionCongruence closure

Partial solution: E-graph (congruence closure) → canonical set of rewriting rules [17].

Our problems have a huge number of ground equalities

Page 51: Engineering DPLL(T) + Saturation IJCAR 2008

Related Work

Engineering DPLL(T) + Saturation

HarveySPASS + TSMELSLASCA

Page 52: Engineering DPLL(T) + Saturation IJCAR 2008

Future work

Engineering DPLL(T) + Saturation

Better superposition calculus engineVariable inactivity (Bonacina)

Assumption: saturated set of non-ground clauses is variable inactive and doesn’t contain interpreted functions.

DPLL +

Theories

Saturation

Solver

Ground literals

Ground clauses

Page 53: Engineering DPLL(T) + Saturation IJCAR 2008

Conclusion

Engineering DPLL(T) + Saturation

Tight integration: DPLL + Saturation.Non-unit ground clauses are delegated to DPLL.Good for software verification.Detecting unsound set of axioms.Implemented in Z3.2.Z3.2 won all -divisions in SMT-COMP’08.