Download presentation
Presentation is loading. Please wait.
Published bySabrina Hope Hall Modified over 9 years ago
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
15
SS p pp 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 } pp { 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 } pp { 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!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.