BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Computability and Complexity Results for a Spatial Assertion Language for Data Structures
FST TCS '01 Proceedings of the 21st Conference on Foundations of Software Technology and Theoretical Computer Science
Relational inductive shape analysis
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scalable Shape Analysis for Systems Code
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Decision procedures for algebraic data types with abstractions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Shape analysis for composite data structures
CAV'07 Proceedings of the 19th international conference on Computer aided verification
A quick tour of the VeriFast program verifier
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
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
Tractable reasoning in a fragment of separation logic
CONCUR'11 Proceedings of the 22nd international conference on Concurrency theory
Smallfoot: modular automatic assertion checking with separation logic
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Recursive proofs for inductive tree data-structures
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An algorithm for deciding BAPA: boolean algebra with presburger arithmetic
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
A decidable fragment of separation logic
FSTTCS'04 Proceedings of the 24th international conference on Foundations of Software Technology and Theoretical Computer Science
Separation predicates: a taste of separation logic in first-order logic
ICFEM'12 Proceedings of the 14th international conference on Formal Engineering Methods: formal methods and software engineering
The tree width of separation logic with recursive definitions
CADE'13 Proceedings of the 24th international conference on Automated Deduction
Hi-index | 0.00 |
We introduce a fragment of separation logic, called NOLL, for automated reasoning about programs manipulating overlaid and nested linked lists, where overlaid means that the lists share the same set of objects. The distinguishing features of NOLL are: (1) it is parametrized by a set of user-defined predicates specifying nested linked list segments, (2) a "per-field" version of the separating conjunction allowing to share object locations but not record field locations, and (3) it can express sharing constraints between list segments. We prove that checking the entailment between two NOLL formulas is co-NP complete using a small model property. We also provide an effective procedure for checking entailment in NOLL, which first constructs a Boolean abstraction of the two formulas in order to infer all the implicit constraints, and then, it checks the existence of a homomorphism between the two formulas, viewed as graphs. We have implemented this procedure and applied it on verification conditions generated from several interesting case studies that manipulate overlaid and nested data structures.