Reasoning about infinite computations
Information and Computation
Temporal verification of reactive systems: safety
Temporal verification of reactive systems: safety
Patterns in property specifications for finite-state verification
Proceedings of the 21st international conference on Software engineering
First-order modal logic
Temporal abstract interpretation
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Model checking
Verifying safety properties of concurrent Java programs using 3-valued logic
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verification by Augmented abstraction: the automata---theoretic view
Journal of Computer and System Sciences
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Language Framework for Expressing Checkable Properties of Dynamic Software
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Checking Cleanness in Linked Lists
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Liveness with (0, 1, infty)-Counter Abstraction
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Live and let die: LSC based verification of UML models
Science of Computer Programming - Formal methods for components and objects pragmatic aspects and applications
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
Termination proofs for systems code
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Transition predicate abstraction and fair termination
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special issue on POPL 2005
A Basic Logic for Reasoning about Connector Reconfiguration
Fundamenta Informaticae - Behavior of Composed Concurrent Systems: Logic and Reasoning
Automatic Verification of Strongly Dynamic Software Systems
Verified Software: Theories, Tools, Experiments
Reasoning About Sequences of Memory States
LFCS '07 Proceedings of the international symposium on Logical Foundations of Computer Science
Verifying Dynamic Pointer-Manipulating Threads
FM '08 Proceedings of the 15th international symposium on Formal Methods
Model Checking Dynamic Memory Allocation in Operating Systems
Journal of Automated Reasoning
Run-Time Checking of Dynamic Properties
Electronic Notes in Theoretical Computer Science (ENTCS)
The spotlight principle: on combining process-summarizing state abstractions
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
A temporal graph logic for verification of graph transformation systems
WADT'06 Proceedings of the 18th international conference on Recent trends in algebraic development techniques
Proving termination of tree manipulating programs
ATVA'07 Proceedings of the 5th international conference on Automated technology for verification and analysis
An appreciation of the work of Reinhard Wilhelm
Program analysis and compilation, theory and practice
Programs with lists are counter automata
Formal Methods in System Design
Safety and liveness in concurrent pointer programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
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
Specifying and reasoning about dynamic access-control policies
IJCAR'06 Proceedings of the Third international joint conference on Automated Reasoning
Tools for verification and validation
Embedded Systems Design
FSTTCS'04 Proceedings of the 24th international conference on Foundations of Software Technology and Theoretical Computer Science
Model checking quantified computation tree logic
CONCUR'06 Proceedings of the 17th international conference on Concurrency Theory
A Basic Logic for Reasoning about Connector Reconfiguration
Fundamenta Informaticae - Behavior of Composed Concurrent Systems: Logic and Reasoning
Footprint analysis: a shape analysis that discovers preconditions
SAS'07 Proceedings of the 14th international conference on Static Analysis
Obligations and their interaction with programs
ESORICS'07 Proceedings of the 12th European conference on Research in Computer Security
Hi-index | 0.00 |
This paper addresses the problem of establishing temporal properties of programs written in languages, such as Java, that make extensive use of the heap to allocate-and deallocate-new objects and threads. Establishing liveness properties is a particularly hard challenge. One of the crucial obstacles is that heap locations have no static names and the number of heap locations is unbounded. The paper presents a framework for the verification of Java-like programs. Unlike classical model checking, which uses propositional temporal logic, we use first-order temporal logic to specify temporal properties of heap evolutions; this logic allows domain changes to be expressed, which permits allocation and deallocation to be modelled naturally. The paper also presents an abstract-interpretation algorithm that automatically verifies temporal properties expressed using the logic.