40 likes | 133 Views
Combining Decision Procedures. Individual DPs Software Engineering Aspects. Sergey Berezin Stanford University. 2*x+3*y<17. Integer. Real. x-y<17. Special Fragments. Linear Arithmetic. x@y[7:5] & 10010 = ~z. car(cons(x,y))=x. Recursive Datatypes. Bitvectors. x*y+z>=17.
E N D
Combining Decision Procedures Individual DPs Software Engineering Aspects Sergey Berezin Stanford University
2*x+3*y<17 Integer Real x-y<17 Special Fragments Linear Arithmetic x@y[7:5] & 10010 = ~z car(cons(x,y))=x Recursive Datatypes Bitvectors x*y+z>=17 Non-linear Arithmetic Decision Procedures Arrays a[i] = (b with [i] := 0)[j] 8x.9y.f Quantifiers Records, Tuples {f:=x, g:=y} = r Transitive Closure x!*y Uninterpreted Functions f(x,y) = g(z) Interpolants Widening
SAT Core DP DP DP Simple Properties on API Concrete Counterexamples DP Completeness I can change my code, and so can you Hackability Integrating SAT SMT-LIB Input Language Clean restarts new/delete Combining Tools Software Engineering C/C++ lib User API Generic Architecture Rapid Prototying DPs as plug-ins (?) Soundness Open-source model (?) Theorem Object Efficiency
DPs in Combination • Online (incremental) • Proof-producing (conflict analysis) • Complete w.r.t. combination • Backtracking (driven by SAT solver) • Efficient