scispace - formally typeset
Open AccessJournal ArticleDOI

The Relationship Between Separation Logic and Implicit Dynamic Frames

Reads0
Chats0
TLDR
In this paper, the semantics of separation logic and implicit dynamic frames are connected by a minimal state extension, which provides a different (but equivalent) definition of semantics for separation logic implication and magic wand connectives, while also giving a suitable semantics for these connectives in implicit dynamic frame fragment.
Abstract
Separation logic is a concise method for specifying programs that manipulate dynamically allocated storage. Partially inspired by separation logic, Implicit Dynamic Frames has recently been proposed, aiming at first-order tool support. In this paper, we precisely connect the semantics of these two logics. We define a logic whose syntax subsumes both that of a standard separation logic, and that of implicit dynamic frames as sub-syntaxes. We define a total heap semantics for our logic, and, for the separation logic subsyntax, prove it equivalent the standard partial heaps model. In order to define a semantics which works uniformly for both subsyntaxes, we define the novel concept of a minimal state extension, which provides a different (but equivalent) definition of the semantics of separation logic implication and magic wand connectives, while also giving a suitable semantics for these connectives in implicit dynamic frames. We show that our resulting semantics agrees with the existing definition of weakest pre-condition semantics for the implicit dynamic frames fragment. Finally, we show that we can encode the separation logic fragment of our logic into the implicit dynamic frames fragment, preserving semantics. For the connectives typically supported by tools, this shows that separation logic can be faithfully encoded in a first-order automatic verification tool (Chalice).

read more

Citations
More filters
Journal ArticleDOI

Leveraging rust types for modular specification and verification

TL;DR: This paper presents a novel verification technique that leverages Rust's type system to greatly simplify the specification and verification of system software written in Rust, and enables a new kind of verification tool, with the potential to impact a wide audience and allow the Rust community to benefit from state-of-the-art verification techniques.
Book ChapterDOI

GRASShopper: Complete heap verification with mixed specifications

TL;DR: GRASShopper, a tool for compositional verification of heap-manipulating programs against user-provided specifications, is presented with its decidable specification language, which supports mixing of assertions expressed in separation logic and first-order logic.
Journal ArticleDOI

Concurrent separation logic

TL;DR: The main ideas that underpin CSL are described, placing these ideas into historical context by summarizing the prevailing tendencies in concurrency verification and programming language semantics when the logic was being invented in 2002-2003.
Proceedings Article

Implicit dynamic frames

TL;DR: This article proposes a variant of separation logic called implicit dynamic frames that supports heap-dependent expressions inside assertions inside assertions and shows that these verification conditions can be discharged automatically by standard first-order provers.
Journal ArticleDOI

Local Reasoning for Global Invariants, Part I: Region Logic

TL;DR: A novel technique for reasoning about error-avoiding partial correctness of programs featuring shared mutable objects is presented, and the technique is investigated by formalizing a logic.
References
More filters
Book ChapterDOI

Dafny: an automatic program verifier for functional correctness

TL;DR: A tour of the language and verifier Dafny, which has been used to verify the functional correctness of a number of challenging pointer-based programs, is given and the full functional specification of the Schorr-Waite algorithm is shown.
Book ChapterDOI

Local Reasoning about Programs that Alter Data Structures

TL;DR: An extension of Hoare's logic for reasoning about programs that alter data structures is described, based on a possible worlds model of the logic of bunched implications, and includes spatial conjunction and implication connectives alongside those of classical logic.
Journal ArticleDOI

Resources, concurrency, and local reasoning

TL;DR: This paper shows how a resource-oriented logic, separation logic, can be used to reason about the usage of resources in concurrent programs.
Journal ArticleDOI

BI as an assertion language for mutable data structures

TL;DR: A model in which the law of the excluded middle holds is given, thus showing that the approach to logic BI of bunched implications of O'Hearn and Pym is compatible with classical logic.
Proceedings ArticleDOI

Checking interference with fractional permissions

TL;DR: An operational semantics of a simple imperative language with structured parallelism is given and it is proved that the permission system enables parallelism to proceed with deterministic results.
Related Papers (5)