Presentation is loading. Please wait.

Presentation is loading. Please wait.

Nikolaj Bjørner, Leonardo de Moura Microsoft Research Bruno Dutertre SRI International.

Similar presentations


Presentation on theme: "Nikolaj Bjørner, Leonardo de Moura Microsoft Research Bruno Dutertre SRI International."— Presentation transcript:

1 Nikolaj Bjørner, Leonardo de Moura Microsoft Research Bruno Dutertre SRI International

2 Accelerating lemma learning using joins SATTheoriesSMT Arithmetic Bit-vectors Arrays …

3 Accelerating lemma learning using joins ArithmeticArithmetic

4 ArithmeticArithmetic Array Theory

5 Accelerating lemma learning using joins ArithmeticArithmetic Array Theory Uninterpreted Functions

6 Accelerating lemma learning using joins VCC Hyper-V Terminator T-2 NModel HAVOC F7 SAGE Vigilante

7 Accelerating lemma learning using joins Z3 is a new solver developed at Microsoft Research. Development/Research driven by internal customers. Free for academic research. Interfaces: http://research.microsoft.com/projects/z3 Z3 TextC/C++.NETOCaml

8 Guessing (case-splitting) Deducing (BCP + Theory propagation) Conflict resolution  Backtracking + Lemma Accelerating lemma learning using joins  a=b  f(a)=f(b), a 10, a > 6  b = 2 Most SMT solvers use only the literals from the given formula!

9 Accelerating lemma learning using joins a[0] = 0 if (c 1 ) { a[1] = 0; } else { a[1] = 1; } … if (c n ) { a[n] = 0; } else { a[n] = 1; } assert(a[0] == 0);

10 Accelerating lemma learning using joins a 1 = write(a 0, 0, 0) (  c 1  a 2 = write(a 1,1,0)) (c 1  a 2 = write(a 1,1,1)) … (  c n  a n+1 = write(a n,n,0)) (c n  a n+1 = write(a n,n,1)) read(a n+1,0)  0 It takes O(2 n ) time if lemmas do not use new literals!

11 Accelerating lemma learning using joins

12 Very slow in practice! It can solve “diamonds” in polynomial time.

13 New literals can be created Case-splitting (guessing) Lemma Learning Any SP(E) inference can be simulated by DPLL(E+  ) Accelerating lemma learning using joins

14

15 SS p pp l New literal l

16 Accelerating lemma learning using joins SS S, l

17 Accelerating lemma learning using joins Define language L (of new literals). Examples: (Bounds) x > 5 (Equality) x = y (Difference) x – y < 3 Theory propagation for L Join operator for L

18 Accelerating lemma learning using joins  p  q,  q  x>5, p  x>y, y > 4

19 Accelerating lemma learning using joins p { x > 5 }  p  q,  q  x>5, p  x>y, y > 4

20 Accelerating lemma learning using joins p { x > 5 } pp { x > 4 }  p  q,  q  x>5, p  x>y, y > 4

21 Accelerating lemma learning using joins { x > 5 } { x > 4 } = {x > 4}  p  q,  q  x>5, p  x>y, y > 4 p { x > 5 } pp { x > 4 }

22 Accelerating lemma learning using joins { x = y, y = z, x = z } { x = z, z = w, x = w } = {x = z}

23 Accelerating lemma learning using joins { x - y < 3 } { x - y < 2, y - z < 1, x - z < 3} = {x - y < 3}

24 Accelerating lemma learning using joins Other examples: Linear arithmetic: polyhedral. Array partial equalities: a = i b (forall x: x = i  a[x] = b[x]) k-look ahead.

25 Accelerating lemma learning using joins SMT solvers are fast, but they may choke in simple formulas. DPLL(join) = SMT + “Abstract Interpretation”. Future work: new literals during conflict resolution. http://research.microsoft.com/projects/z3 Thank You!


Download ppt "Nikolaj Bjørner, Leonardo de Moura Microsoft Research Bruno Dutertre SRI International."

Similar presentations


Ads by Google