Putting static analysis to work for verification: A case study
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 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)
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Abstract Cofibered Domains: Application to the Alias Analysis of Untyped Programs
SAS '96 Proceedings of the Third International Symposium on Static Analysis
A framework for numeric analysis of array operations
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Higher-Order and Symbolic Computation
Shape analysis with inductive recursion synthesis
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Maintaining doubly-linked list invariants in shape analysis with local reasoning
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Automated verification of shape and size properties via separation logic
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
Shape analysis for composite data structures
CAV'07 Proceedings of the 19th international conference on Computer aided verification
An abstract domain for analyzing heap-manipulating low-level software
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Specialized 3-valued logic shape analysis using structure-based refinement and loose embedding
SAS'06 Proceedings of the 13th international conference on Static Analysis
Automatic verification of pointer programs using grammar-based shape analysis
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Data structure specifications via local equality axioms
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
A local shape analysis based on separation logic
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Shape analysis with structural invariant checkers
SAS'07 Proceedings of the 14th international conference on Static Analysis
Arithmetic strengthening for shape analysis
SAS'07 Proceedings of the 14th international conference on Static Analysis
Enhancing Program Verification with Lemmas
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Compositional shape analysis by means of bi-abduction
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Classical BI: a logic for reasoning about dualising resources
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-based data structure verification
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
ACM Computing Surveys (CSUR)
Effective interactive proofs for higher-order imperative programs
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic numeric abstractions for heap-manipulating programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Structuring the verification of heap-manipulating programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Detecting inefficiently-used containers to avoid bloat
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
A Unified Display Proof Theory for Bunched Logic
Electronic Notes in Theoretical Computer Science (ENTCS)
Some Experience on the Software Engineering of Abstract Interpretation Tools
Electronic Notes in Theoretical Computer Science (ENTCS)
Concrete Memory Models for Shape Analysis
Electronic Notes in Theoretical Computer Science (ENTCS)
Deriving numerical abstract domains via principal component analysis
SAS'10 Proceedings of the 17th international conference on Static analysis
A shape analysis for non-linear data structures
SAS'10 Proceedings of the 17th international conference on Static analysis
Abstraction of object graphs in program verification
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Calling context abstraction with shapes
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Loop invariant synthesis in a combined domain
ICFEM'10 Proceedings of the 12th international conference on Formal engineering methods and software engineering
Mostly-automated verification of low-level programs in computational separation logic
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Separation logic + superposition calculus = heap theorem prover
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
On inter-procedural analysis of programs with lists and data
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Automatically refining partial specifications for program verification
FM'11 Proceedings of the 17th international conference on Formal methods
Structured specifications for better verification of heap-manipulating programs
FM'11 Proceedings of the 17th international conference on Formal methods
Automated cyclic entailment proofs in separation logic
CADE'11 Proceedings of the 23rd international conference on Automated deduction
A specialization calculus for pruning disjunctive predicates to support verification
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Compositional Shape Analysis by Means of Bi-Abduction
Journal of the ACM (JACM)
Policy iteration within logico-numerical abstract domains
ATVA'11 Proceedings of the 9th international conference on Automated technology for verification and analysis
Shape analysis of low-level c with overlapping structures
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Abstract domains for automated reasoning about list-manipulating programs with infinite data
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Efficient bottom-up heap analysis for symbolic path-based data access summaries
Proceedings of the Tenth International Symposium on Code Generation and Optimization
Discovering invariants via simple component analysis
Journal of Symbolic Computation
Verified heap theorem prover by paramodulation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Static detection of loop-invariant data structures
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Loop invariant synthesis in a combined abstract domain
Journal of Symbolic Computation
Studia Logica
A theorem prover for Boolean BI
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FESA: fold- and expand-based shape analysis
CC'13 Proceedings of the 22nd international conference on Compiler Construction
Compositional invariant checking for overlaid and nested linked lists
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Natural proofs for structure, data, and separation
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Thresher: precise refutations for heap reachability
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Static analysis of list-manipulating programs via bit-vectors and numerical abstractions
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Fissile type analysis: modular checking of almost everywhere invariants
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
A proof system for separation logic with magic wand
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Invariants synthesis over a combined domain for automated program verification
Theories of Programming and Formal Methods
Automatically refining partial specifications for heap-manipulating programs
Science of Computer Programming
Hi-index | 0.00 |
Shape analyses are concerned with precise abstractions of the heap to capture detailed structural properties. To do so, they need to build and decompose summaries of disjoint memory regions. Unfortunately, many data structure invariants require relations be tracked across disjoint regions, such as intricate numerical data invariants or structural invariants concerning back and cross pointers. In this paper, we identify issues inherent to analyzing relational structures and design an abstract domain that is parameterized both by an abstract domain for pure data properties and by user-supplied specifications of the data structure invariants to check. Particularly, it supports hybrid invariants about shape and data and features a generic mechanism for materializing summaries at the beginning, middle, or end of inductive structures. Around this domain, we build a shape analysis whose interesting components include a pre-analysis on the user-supplied specifications that guides the abstract interpretation and a widening operator over the combined shape and data domain. We then demonstrate our techniques on the proof of preservation of the red-black tree invariants during insertion.