Automatic verification of finite-state concurrent systems using temporal logic specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
The existence of refinement mappings
Theoretical Computer Science
Symbolic model checking: 1020 states and beyond
Information and Computation - Special issue: Selections from 1990 IEEE symposium on logic in computer science
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
Model checking
Another Look at LTL Model Checking
Formal Methods in System Design
Tree-Like Counterexamples in Model Checking
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Model-Checking LTL with Regular Valuations for Pushdown Systems
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Model Checking on Product Structures
FMCAD '98 Proceedings of the Second International Conference on Formal Methods in Computer-Aided Design
Branching vs. Linear Time: Final Showdown
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Fast LTL to Büchi Automata Translation
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
Temporal-Safety Proofs for Systems Code
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
PRISM: Probabilistic Symbolic Model Checker
TOOLS '02 Proceedings of the 12th International Conference on Computer Performance Evaluation, Modelling Techniques and Tools
The common fragment of CTL and LTL
FOCS '00 Proceedings of the 41st Annual Symposium on Foundations of Computer Science
Counterexample-guided abstraction refinement for symbolic model checking
Journal of the ACM (JACM)
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Liveness with invisible ranking
International Journal on Software Tools for Technology Transfer (STTT)
Proving that programs eventually do something good
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Thorough static analysis of device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
The temporal logic of programs
SFCS '77 Proceedings of the 18th Annual Symposium on Foundations of Computer Science
On the complexity of omega -automata
SFCS '88 Proceedings of the 29th Annual Symposium on Foundations of Computer Science
Oracle semantics
Handling Liveness Properties in (ω-)Regular Model Checking
Electronic Notes in Theoretical Computer Science (ENTCS)
Branching vs. linear time: semantical perspective
ATVA'07 Proceedings of the 5th international conference on Automated technology for verification and analysis
Termination of polynomial programs
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
A fast linear-arithmetic solver for DPLL(T)
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Using language inference to verify omega-regular properties
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Linear ranking with reachability
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
PSL model checking and run-time verification via testers
FM'06 Proceedings of the 14th international conference on Formal Methods
ARMC: the logical choice for software model checking with abstraction refinement
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Arithmetic strengthening for shape analysis
SAS'07 Proceedings of the 14th international conference on Static Analysis
Temporal property verification as a program analysis task
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Automatic analysis of DMA races using model checking and k-induction
Formal Methods in System Design
An abstract interpretation framework for termination
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Temporal property verification as a program analysis task
Formal Methods in System Design
A structural approach to prophecy variables
TAMC'12 Proceedings of the 9th Annual international conference on Theory and Applications of Models of Computation
Reasoning about nondeterminism in programs
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Better termination proving through cooperation
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hi-index | 0.00 |
We describe a new algorithm for proving temporal properties expressed in LTL of infinite-state programs. Our approach takes advantage of the fact that LTL properties can often be proved more efficiently using techniques usually associated with the branching-time logic CTL than they can with native LTL algorithms. The caveat is that, in certain instances, nondeterminism in the system's transition relation can cause CTL methods to report counter examples that are spurious with respect to the original LTL formula. To address this problem we describe an algorithm that, as it attempts to apply CTL proof methods, finds and then removes problematic nondeterminism via an analysis on the potentially spurious counterexamples. Problematic nondeterminism is characterized using decision predicates, and removed using a partial, symbolic determinization procedure which introduces new prophecy variables to predict the future outcome of these choices. We demonstrate---using examples taken from the PostgreSQL database server, Apache web server, and Windows OS kernel---that our method can yield enormous performance improvements in comparison to known tools, allowing us to automatically prove properties of programs where we could not prove them before.