Abstraction Refinement for Bounded Model Checking
Abstraction Refinement for Bounded Model Checking. Highly Jet Lagged. Anubhav Gupta, CMU Ofer Strichman, Technion. Bounded Model Checking (BMC). Search for bugs in executions of a bounded length
Abstraction Refinement for Bounded Model Checking
E N D
Presentation Transcript
Abstraction Refinement for Bounded Model Checking Highly Jet Lagged Anubhav Gupta, CMU Ofer Strichman, Technion
Bounded Model Checking (BMC) • Search for bugs in executions of a bounded length • Generates a propositional formula that is satisfiable if and only if there is a counterexample of length k • Extremely efficient SAT-solvers are available
SAT BMC BMC - Implementation Incremental Solver Yes NO BUG No BUG Unsat Sat
How to identify ? Abstraction for BDD-based Model Checking Abstraction Model Checking complexity is proportional to BDD size Smaller BDD
MC Counterexample Guided Abstraction Refinement (CEGAR) BUG TRUE No Fail Pass Yes
Inside a SAT-Solver • Davis-Putnam-Logemann-Loveland (DPLL) procedure • Decisions • Boolean Constraint Propagation (BCP) • Conflict Analysis, Backtrack Search Tree
Decisions • Identify a goodvariable and assign it a value • Many Variable Selection Heuristics • Give preference to variables that are involved in conflicts • Order is continuously updated • Like abstraction-refinement • These heuristics try to reduce the size of the search tree
BCP • Identify assignments implied by unit-clause rule • 90% of run-time in solver spent on BCP • Time spent on BCP is proportional to the size of the CNF
Conflict Analysis and Backtrack • Identify variable assignments responsible for infeasibility of current search path • Ensures that assignments are locally consistent • Prune away irrelevant parts of the search tree
Abstraction for BMC Abstraction Smaller CNF
How to identify ? Why Abstraction for BMC ? • Variable selection can focus on important variables • Solver can ignore local conflicts that are irrelevant to the property • BCP is faster on smaller CNF Abstraction
CEGAR for BMC • Apply CEGAR to BMC • Refinement • SAT-solvers produce proofs of unsatisfiability • Have been used successively for refinement in CEGAR for model checking • Proofs provide an efficient and inexpensive refinement mechanism for CEGAR on BMC
SAT SAT Counterexample Guided Bounded Model Checking (CG-BMC) Yes NO BUG No BUG Sat Sat Unsat
CG-BMC • Abstract model: model that refutes previously seen spurious counterexamples • Forces solver to find full abstract trace before attempting to refute it • Solver is not lost in local conflicts • Most of the BCP is performed on smaller abstract model Abstract Model Concrete Model
A more robust CG-BMC • The following scenario was observed on some benchmarks: • Current abstract model is sufficient to prove the property • Proving the property on abstract model is hard • BMC on abstract model is slow • There exists an easier proof using additional constraints from concrete model • BMC on concrete model is faster • CG-BMC gets stuck on abstract model • Solution: Timeouts
SAT SAT CG-BMC with Timeouts (CG-BMC-T) CG-BMC Yes Time NO BUG No BUG Sat Sat Time Unsat
Related Work • Refining the SAT decision ordering for bounded model checking, Wang et al., DAC 2004 • Variables in current abstract model are given preference in variable splitting order • Static Method: Always decide first on variables in abstract model • Dynamic Method: Switch to default solver-heuristic after a threshold number of backtracks • Solver works on the whole CNF • BCP is expensive • Potential for irrelevant conflicts
SAT SAT Our CG-BMC Implementation Incremental Solver1 Incremental Solver2 Yes NO BUG No BUG Sat Sat Unsat
Experiments • PicoJava Benchmarks – derived from compositional verification of ICU (Source: Ken McMillan) • Implementation on top of zChaff • Comparison with BMC and Wang et al. • Timeout = 2hrs • Max Depth (K) = 60 • Measured run-time and number of backtracks
Conclusions • Abstraction refinement makes BMC faster • Reduction in number of backtracks • Reduction in BCP time
Future Work • CG-BMC inside a SAT-solver • Abstraction levels for clauses • Ignore clauses in lower levels until all higher levels are satisfied • Move clauses up (and down) across levels • Application to SAT-solving in general . . .