Accelerating Lemma Learning Using Joins in Satisfiability Modulo Theories

Slide Note
Embed
Share

Explore the use of joins in accelerating lemma learning within the context of Satisfiability Modulo Theories (SMT). The study covers various SMT applications at Microsoft and delves into the development of the Z3 solver. Key topics include theories, arithmetic operations, array theory, uninterpreted functions, and the application of lemma learning techniques. Discover how SMT solvers leverage theories, case-splitting, theory propagation, and conflict resolution to efficiently solve complex logical formulas.


Uploaded on Sep 15, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Accelerating lemma learning using joins LPAR 2008 Doha, Qatar Nikolaj Bj rner, Leonardo de Moura Microsoft Research Bruno Dutertre SRI International

  2. Satisfiability Modulo Theories (SMT) SMT SAT Theories Arithmetic Bit-vectors Arrays Accelerating lemma learning using joins

  3. Satisfiability Modulo Theories (SMT) + = = ) 1 + 2 ( ( ( , 3 , x ), ) 2 ( x y f read write a y f y x Arithmetic Accelerating lemma learning using joins

  4. Satisfiability Modulo Theories (SMT) + = ) 2 = ) 1 + 2 ( ( ( , 3 , x ), ( x y f read write a y f y x Arithmetic Array Theory Accelerating lemma learning using joins

  5. Satisfiability Modulo Theories (SMT) + = ) 2 = ) 1 + 2 ( ( ( , 3 , x ), ( x y f read write a y f y x Uninterpreted Arithmetic Array Theory Functions Accelerating lemma learning using joins

  6. SMT: Some Applications @ Microsoft HAVOC Hyper-V Terminator T-2 VCC Vigilante NModel F7 SAGE Accelerating lemma learning using joins

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

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

  9. Is SMT fast??? a[0] = 0 if (c1) { a[1] = 0; } else { a[1] = 1; } if (cn) { a[n] = 0; } else { a[n] = 1; } assert(a[0] == 0); Accelerating lemma learning using joins

  10. Is SMT fast??? a1= write(a0, 0, 0) ( c1 a2 = write(a1,1,0)) (c1 a2 = write(a1,1,1)) ( cn an+1 = write(an,n,0)) (cn an+1 = write(an,n,1)) read(an+1,0) 0 It takes O(2n) time if lemmas do not use new literals! Accelerating lemma learning using joins

  11. Diamonds are eternal Accelerating lemma learning using joins

  12. SP(E) calculus It can solve diamonds in polynomial time. Very slow in practice! Accelerating lemma learning using joins

  13. DPLL (E + ) 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. How do we create ? Accelerating lemma learning using joins

  15. Look ahead New literal p ll S p ll Accelerating lemma learning using joins

  16. Look ahead S S, ll Accelerating lemma learning using joins

  17. The plan 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 p S1 S S1 S2 S2 p Accelerating lemma learning using joins

  18. Join: Examples (Bounds) p q, q x>5, p x>y, y > 4 Accelerating lemma learning using joins

  19. Join: Examples (Bounds) p q, q x>5, p x>y, y > 4 p { x > 5 } Accelerating lemma learning using joins

  20. Join: Examples (Bounds) p q, q x>5, p x>y, y > 4 p p { x > 5 } { x > 4 } Accelerating lemma learning using joins

  21. Join: Examples (Bounds) p q, q x>5, p x>y, y > 4 p p { x > 5 } { x > 4 } { x > 5 } { x > 4 } = {x > 4} Accelerating lemma learning using joins

  22. Join: Examples (Equalities) { x = y, y = z, x = z } { x = z, z = w, x = w } = {x = z} Accelerating lemma learning using joins

  23. Join: Examples (Difference constraints) { x - y < 3 } { x - y < 2, y - z < 1, x - z < 3} = {x - y < 3} Accelerating lemma learning using joins

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

  25. Conclusion 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! Accelerating lemma learning using joins

More Related Content