Sunteți pe pagina 1din 10

Proceduri de decizie bazate pe SAT

SAT solvere SMT solvere Aplicatii

Proceduri de decizie
programe Booleene satisfiabilitatea formulelor propozitionale programe aritmetice satisfiabilitatea formulelor propozitionale modulo teoria aritmeticii lineare programe pentru analiza managementului memoriei satisfiabilitatea formulelor propozitionale modulo teoria aritmeticii lineare + tablouri (arrays)

SAT prima problema NP-completa (Cook 1972) algoritmul Davis-Putnam (1960) bazat pe rezolutie poate utiliza spatiu de memorie exponential algoritm Davis-Putnam Logemann-Loveland DPLL (1962) bazat pe cautare constituie baza solverelor moderne Conflict-driven learning and non-chronological backtracking (1996) revenirea in forta a rezolutiei! SAT-solvere de succes: GRASP, SATO, Chaff, ZChaff, BerkMin,

Satisfiabilitate modulo teorii (SMT) SMT-solvere Alt-Ergo, Ario, Barcelogic, Beaver, Boolector, CVC, CVC Lite, CVC3, DPT (Intel), ExtSAT, Harvey, HTP, ICS (SRI), Jat, MathSAT, OpenSMT, Sateen, Simplify, Spear, STeP, STP, SVC, Sword, TSAT, UCLID, Yices (SRI), Zap, Zapato, Z3 (Microsoft)

Algoritmul Davis-Putnam 1/3


Data o multime de clauze C, se considera regulile: 1: Daca exista o clauza (c 2: Daca exista o clauza (c l b l) b) C, se inlocuieste cu (c C, se elimina din C l)

3a: Daca b nu apare in nicio clauza din C, se elimina din C orice clauza care contine b 3b: Daca b nu apare in nicio clauza din C, se elimina din C orice clauza care contine b

Algoritmul Davis-Putnam 2/3


procedure Davis-Putnam Satureaza C aplicand regulile 1, 2, 3a, si 3b while (C nonempty) { Alege o variabila b care apare intr-o clauza din C C = {resolvent(b,c1,c2)|c1,c2 C } Satureaza C aplicand regulile 1, 2, 3a, si 3b if (() C) return nesatisfiabila C = C } return satisfiabila end

Algoritmul Davis-Putnam 2/3


Corectitudine regulile 1, 2, 3a, si 3b pastreaza satisfiabilitatea C = b. C

Complexitate daca n este numarul de clauze din multimea de intrare, atunci numarul de clauze dupa a i-a iteratie este O(n^(2^i))

Procedura DPLL moderna


slide-urile 20-59 din http://research.microsoft.com/en-

us/um/people/leonardo/oregon08.pdf

SMT sovere
slide-urile 60-79 din http://research.microsoft.com/en-

us/um/people/leonardo/oregon08.pdf

Applications
Extended Static Checking. Spec#, VCC, HAVOC ESC/Java Predicate Abstraction. SLAM/SDV (device driver verification). Test-case generation. Pex, Sage Bounded Model Checking (BMC) & k-induction. Symbolic Simulation. Planning & Scheduling. Equivalence checking.

S-ar putea să vă placă și