Abstract

The list segment predicate \(\mathtt {ls}\) used in separation logic for verifying programs with pointers is well-suited to express properties on singly-linked lists. We study the effects of adding \(\mathtt {ls}\) to the full propositional separation logic with the separating conjunction and implication, which is motivated by the recent design of new fragments in which all these ingredients are used indifferently and verification tools start to handle the magic wand connective. This is a very natural extension that has not been studied so far. We show that the restriction without the separating implication can be solved in polynomial space by using an appropriate abstraction for memory states whereas the full extension is shown undecidable by reduction from first-order separation logic. Many variants of the logic and fragments are also investigated from the computational point of view when \(\mathtt {ls}\) is added, providing numerous results about adding reachability predicates to propositional separation logic.

Highlights

  • Separation logic [20,25,28] is a well-known assertion logic for reasoning about programs with dynamic data structures

  • Suppose that the set of valid formulae for SL(∗, −∗, ls) were r.e., one can enumerate the valid formulae of the form TVAL(φ) as it is decidable in PTime whether ψ in SL(∗, −∗, ls) is syntactically equal to TVAL(φ) for some SL(∀, −∗) formula φ

  • In order to define a set of test formulae that captures the expressive power of SL(∗, reach+), we need to study which basic properties on memory states can be expressed by SL(∗, reach+) formulae

Read more

Summary

Introduction

Separation logic [20,25,28] is a well-known assertion logic for reasoning about programs with dynamic data structures. Even though the first tools could handle relatively limited fragments of separation logic, like symbolic heaps, there is a growing interest and demand to consider extensions with richer expressive power. – Symbolic heaps with generalised inductive predicates, adding a fixpoint combinator to the language, is a convenient logic for specifying data structures that are more advanced than lists or trees. (s1, h1) satisfies this formula by considering a subheap that does not contain a path from s(xk) to s(xi), whereas it is impossible to find a subheap for (s2, h2) that retains the path from s(xi) to s(xj), the one from s(xj) to s(xk) but where the path from s(xk) to s(xi) is lost This suggests that SL(∗, reach+) can express xi xi xi xj xi xj xk xk xj xj xk xk whether, for example, any path from s(xi) to s(xj) contains s(xk). We will introduce the test formula seesq(xi, xj) ≥ β to capture this property

Objectives
Results
Conclusion
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.