Parallelizing programs with recursive data structures
Parallelizing programs with recursive data structures
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Incremental and decremental evaluation of transitive closure by first-order queries
Information and Computation
Solving shape-analysis problems in languages with destructive updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dyn-FO: a parallel, dynamic complexity class
Journal of Computer and System Sciences - Special issue on principles of database systems
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
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)
Verifying reachability invariants of linked structures
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Recursive object types in a logic of object-oriented programs
Nordic Journal of Computing
A Decidable Logic for Describing Linked Data Structures
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Compile-Time Debugging of C Programs Working on Trees
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
TVLA: A System for Implementing Static Analyses
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
CADE-13 Proceedings of the 13th International Conference on Automated Deduction: Automated Deduction
Dynamic computational complexity
Dynamic computational complexity
Finite differencing of logical formulas for static analysis
ESOP'03 Proceedings of the 12th European conference on Programming
Abstraction refinement via inductive learning
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Verifying properties of well-founded linked lists
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Conditional must not aliasing for static race detection
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
Proving Resource Consumption of Low-level Programs Using Automated Theorem Provers
Electronic Notes in Theoretical Computer Science (ENTCS)
Back to the future: revisiting precise program verification using SMT solvers
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
Verifying Dynamic Pointer-Manipulating Threads
FM '08 Proceedings of the 15th international symposium on Formal Methods
Abstracting Complex Data Structures by Hyperedge Replacement
ICGT '08 Proceedings of the 4th international conference on Graph Transformations
Linear Functional Fixed-points
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Abstract Object Creation in Dynamic Logic
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Verification of Java Programs with Interacting Analysis Plugins
Electronic Notes in Theoretical Computer Science (ENTCS)
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Constructing specialized shape analyses for uniform change
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
A reachability predicate for analyzing low-level software
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
Verifying heap-manipulating programs in an SMT framework
ATVA'07 Proceedings of the 5th international conference on Automated technology for verification and analysis
Decidable fragments of many-sorted logic
LPAR'07 Proceedings of the 14th international conference on Logic for programming, artificial intelligence and reasoning
Detecting inefficiently-used containers to avoid bloat
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
An overview of the Jahob analysis system: project goals and current status
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Matching logic: an alternative to hoare/floyd logic
AMAST'10 Proceedings of the 13th international conference on Algebraic methodology and software technology
Enforcing structural invariants using dynamic frames
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
Relational reasoning via SMT solving
FM'11 Proceedings of the 17th international conference on Formal methods
An efficient decision procedure for imperative tree data structures
CADE'11 Proceedings of the 23rd international conference on Automated deduction
Invisible safety of distributed protocols
ICALP'06 Proceedings of the 33rd international conference on Automata, Languages and Programming - Volume Part II
Abstraction for shape analysis with fast and precise transformers
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Deciding functional lists with sublist sets
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Generating Invariant-Based Certificates for Embedded Systems
ACM Transactions on Embedded Computing Systems (TECS)
Static detection of loop-invariant data structures
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Hi-index | 0.00 |
This paper shows how to harness existing theorem provers for first-order logic to automatically verify safety properties of imperative programs that perform dynamic storage allocation and destructive updating of pointer-valued structure fields. One of the main obstacles is specifying and proving the (absence) of reachability properties among dynamically allocated cells. The main technical contributions are methods for simulating reachability in a conservative way using first-order formulas—the formulas describe a superset of the set of program states that can actually arise. These methods are employed for semi-automatic program verification (i.e., using programmer-supplied loop invariants) on programs such as mark-and-sweep garbage collection and destructive reversal of a singly linked list. (The mark-and-sweep example has been previously reported as being beyond the capabilities of ESC/Java.)