SlideServe
Menu
Préférences
© SlideServe · v2026

Enhancing Path Sensitivity Analysis via Boolean Satisfiability Techniques

starbuck avatar
11 diapositives · 259 Views · Aug 26, 2014

This work explores the application of Boolean satisfiability (SAT) methods for path-sensitive analysis, addressing issues in software verification, artificial intelligence, and more. Traditional SAT involves solving classic NP-complete problems using tools like Chaff and Grasp. Our approach focuses on eliminating false positives and reasoning about values in complex programs, identifying integer overflows, buffer overruns, and off-by-one errors. We also discuss modeling properties, translating expressions, and control flow transformations, highlighting future work on optimizing transitions and cases in path sensitivity.

Enhancing Path Sensitivity Analysis via Boolean Satisfiability Techniques - slide 1
01 / 11Enhancing Path Sensitivity Analysis via Boolean Satisfiability Techniques
1 / 17

Télécharger la présentation

Enhancing Path Sensitivity Analysis via Boolean Satisfiability Techniques
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Using Boolean Satisfiability for Path Sensitive Analysis Yichen Xie, Andy Chou

  2. SAT • Classic NP-complete problem • Backend for many tools in verification, AI, etc. • Much recent work: • Chaff / Grasp / SATO / GSAT • SAT problem P = conjunction of clauses • Clause = Disjunction of literals • Literal = v orv • Example: (x  y)  (x  y) • A is a satisfying assignment if P(A) = true

  3. Motivation • Eliminate false positives from false paths • Reasoning about values • Integer overflows • Buffer overruns • Off-by-one errors • Branch correlations / Path sensitivity • Take advantage of SAT solver improvements

  4. Modeling Properties if(x) lock(l); if(x) unlock(l); if(x) { assert(l == unlocked); l = locked } if(x) { assert(l == locked); l = unlocked; }

  5. Translating Expressions • X => [x31 x30 …x0] • Expressions: Build circuit for operations • X != 0 => x31x30 …  x0 • X == 0 => (x31x30 …  x0) • X == Y => (x31=y31 …  x0=y0) • Addition: ripple-carry adder • Multiply by constant: Booth’s algorithm • Negative numbers: 2’s complement • Bit operations easy • Captures effect of overflow

  6. Translating Statements • SSA Transformation Table T(v) = vi • Assignment T[e] => E T’ = Rename(x, T) T[x = e] => (T’(x) = E), T’

  7. Translating Control Flow • Similar to verification condition generation • See the ESC/Java paper we read • Build path expression (regular expression of edges in CFG) • Translate path expression • Sequence => AND • Branch => OR • Loop => Desugar and unroll

  8. Demo

  9. Related Work • Metal - adds path sensitivity • ESC • simpler slicing, variable renaming • interprocedural • annotations optional • SLAM/Lazy Abstraction • no iteration; guaranteed to converge • no need to “discover” predicates • SAT > Model checking

  10. Related Work • ESP • Catch more than constants • Prefix • Sound • Simultaneously simulate all paths • Model Checking • Eats too much memory for many problems

  11. Future Work • Slice w.r.t. transitions • Only extract variables that influence transitions • Unroll loops & recursion enough times to get all possible transitions