Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Model checking and abstraction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Bebop: A Symbolic Model Checker for Boolean Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
An Optimizing Compiler for Efficient Model Checking
FORTE XII / PSTV XIX '99 Proceedings of the IFIP TC6 WG6.1 Joint International Conference on Formal Description Techniques for Distributed Systems and Communication Protocols (FORTE XII) and Protocol Specification, Testing and Verification (PSTV XIX)
Static Analysis for State-Space Reductions Preserving Temporal Logics
Formal Methods in System Design
A dead variable analysis for explicit model checking
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Software verification with BLAST
SPIN'03 Proceedings of the 10th international conference on Model checking software
Model checking machine code with the GNU debugger
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Application of static analyses for state-space reduction to the microcontroller binary code
Science of Computer Programming
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.01 |
State explosion in model checking continues to be the primary obstacle to widespread use of software model checking. The large input ranges of variables used in software is the main cause of state explosion. As software grows in size and complexity, the problem only becomes worse. As such, model checking research into data abstraction as a way of mitigating state explosion has become more and more important. Data abstractions aim to reduce the effect of large input ranges. This work focuses on a static program analysis technique called dead variable analysis. The goal of dead variable analysis is to discover variable assignments that are not used. When applied to model checking, this allows us to ignore the entire input range of dead variables and thus reduce the size of the explored state space. Prior research into dead variable analysis for model checking does not make full use of dynamic run-time information that is present during model checking. We present an algorithm for intraprocedural dead variable analysis that uses dynamic run-time information to find more dead variables on-the-fly and further reduce the size of the explored state space. We introduce a definition for the maximal state space reduction possible through an on-the-fly dead variable analysis and then show that our algorithm produces a maximal reduction in the absence of non-determinism.