IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
Reduction: a method of proving properties of parallel programs
Communications of the ACM
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Craft of Programming
Practical Methods for Proving Program Termination
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
A static analyzer for large safety-critical software
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Efficient Verification of Sequential and Concurrent C Programs
Formal Methods in System Design
Dynamic partial-order reduction for model checking software
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Modular verification of multithreaded programs
Theoretical Computer Science
Termination analysis of integer linear loops
CONCUR 2005 - Concurrency Theory
Safe Concurrency for Aggregate Objects with Invariants
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Higher-Order and Symbolic Computation
Variance analyses from invariance analyses
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Learning assumptions for compositional verification
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
SPIN'03 Proceedings of the 10th international conference on Model checking software
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Termination of polynomial programs
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Symbolic model checking of concurrent programs using partial orders and on-the-fly transactions
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Automatic termination proofs for programs with shape-shifting heaps
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Programs with lists are counter automata
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Environment abstraction for parameterized verification
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Ranking abstraction of recursive programs
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Linear ranking with reachability
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Hang analysis: fighting responsiveness bugs
Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008
Software engineering and formal methods
Communications of the ACM - Enterprise information integration: and other tools for merging data
Local Proofs for Linear-Time Properties of Concurrent Programs
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Proving Conditional Termination
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
A hybrid type system for lock-freedom of mobile processes
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the complexity of termination inference for processes
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
Engineering the development of embedded systems
Formal methods and hybrid real-time systems
COSTABS: a cost and termination analyzer for ABS
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Explicit fair scheduling for dynamic control
Concurrency, Compositionality, and Correctness
TACAS'10 Proceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Cost analysis of concurrent OO programs
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Compositional termination proofs for multi-threaded programs
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Termination analysis with algorithmic learning
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Detecting fair non-termination in multithreaded programs
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Finding non-terminating executions in distributed asynchronous programs
SAS'12 Proceedings of the 19th international conference on Static Analysis
Hi-index | 0.00 |
Concurrent programs are often designed such that certain functions executing within critical threads must terminate. Examples of such cases can be found in operating systems, web servers, e-mail clients, etc. Unfortunately, no known automatic program termination prover supports a practical method of proving the termination of threads. In this paper we describe such a procedure. The procedure's scalability is achieved through the use of environment models that abstract away the surrounding threads. The procedure's accuracy is due to a novel method of incrementally constructing environment abstractions. Our method finds the conditions that a thread requires of its environment in order to establish termination by looking at the conditions necessary to prove that certain paths through the thread represent well-founded relations if executed in isolation of the other threads. The paper gives a description of experimental results using an implementation of our procedureon Windows device drivers and adescription of a previously unknown bug found withthe tool.