POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Counterexample-Guided Abstraction Refinement
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
SYNERGY: a new algorithm for property checking
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
The software model checker Blast: Applications to software engineering
International Journal on Software Tools for Technology Transfer (STTT)
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Compositional may-must program analysis: unleashing the power of alternation
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Efficient generation of craig interpolants in satisfiability modulo theories
ACM Transactions on Computational Logic (TOCL)
Efficient predicate abstraction of program summaries
NFM'11 Proceedings of the Third international conference on NASA Formal methods
CPACHECKER: a tool for configurable software verification
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Interpolation-based software verification with WOLVERINE
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Lazy abstraction with interpolants
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
SATABS: SAT-Based predicate abstraction for ANSI-C
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Lazy annotation for program testing and verification
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Abstract analysis of symbolic executions
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Abstraction refinement with craig interpolation and symbolic pushdown systems
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Whale: an interpolation-based algorithm for inter-procedural verification
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Taking satisfiability to the next level with z3
IJCAR'12 Proceedings of the 6th international joint conference on Automated Reasoning
UFO: a framework for abstractionand interpolation-based software verification
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
SAS'12 Proceedings of the 19th international conference on Static Analysis
UFO: verification with interpolants and abstract interpretation
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Automatic abstraction in SMT-Based unbounded software model checking
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hi-index | 0.00 |
Current approaches to software model checking can be divided into over-approximation-driven (OD) and under-approximation-driven (UD). OD approaches maintain an abstraction of the transition relation of a program and use abstract reachability to build an inductive invariant (or find a counterexample). At the other extreme, UD approaches attempt to construct inductive invariants by generalizing from finite paths through the control-flow graph of the program. In this paper, we present Ufo, an algorithm that unifies OD and UD approaches in order to leverage both of their advantages. Ufo is parameterized by the degree to which over- and under-approximations drive the analysis. At one extreme, Ufo is a novel interpolation-based (UD) algorithm that generates interpolants to label (refine) multiple program paths using a single SMT solver query. At the other extreme, Ufo uses an abstract domain to drive the analysis, while using interpolants to strengthen the abstraction. We have implemented Ufo in LLVM and applied it to programs from the Competition on Software Verification. Our experimental results demonstrate the utility of our algorithm and the benefits of combining UD and OD approaches.