Sound Automation of Magic Wands (extended version)

  title={Sound Automation of Magic Wands (extended version)},
  author={Thibault Dardinier and Gaurav Parthasarathy and No{\'e} Weeks and Alexander J. Summers and Peter Muller},
. The magic wand −∗ (also called separating implication) is a separation logic connective commonly used to specify properties of partial data structures, for instance during iterative traversals. A footprint of a magic wand formula A −∗ B is a state that, combined with any state in which A holds, yields a state in which B holds. The key challenge of proving a magic wand (also called packaging a wand) is to find such a footprint. Existing package algorithms either have a high annotation overhead… 

Figures and Tables from this paper



Lightweight Support for Magic Wands in an Automatic Verifier (Artifact)

This paper shows how to integrate support for the magic wand into an automatic verifier, requiring low specification overhead from the tool user and is compatible with a variety of logics and underlying implementation techniques.

Witnessing the elimination of magic wands

  • S. BlomM. Huisman
  • Computer Science
    International Journal on Software Tools for Technology Transfer
  • 2015
This paper discusses static verification of programs that have been specified using separation logic with magic wands, and encoding of other aspects of annotated Java programs into Chalice, and in particular, the encoding of abstract predicates with permission parameters.

Proof Pearl: Magic Wand as Frame

By using magic wand to express frames that relate mutable local portions of data structures to global portions, this paper demonstrates that many useful separation logic theorems about partial data structures can now be proved by simple automated tactics.

A proof system for separation logic with magic wand

A proof system for full separation logic which supports not only separating conjunction but also separating implication is developed and it is shown that the proof of completeness directly translates to a proof search strategy.

GRASShopper - Complete Heap Verification with Mixed Specifications

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.

On the almighty wand

MoSeL: a general, extensible modal framework for interactive proofs in separation logic

This paper proposes MoSeL, a general and extensible Coq framework that brings the benefits of IPM to a much larger class of separation logics, and provides generic tactics that can be easily extended to account for the bespoke connectives of the logics with which it is instantiated.

The Relationship Between Separation Logic and Implicit Dynamic Frames

This paper provides a total heap semantics for a standard separation logic, and proves it equivalent to the standard model, and shows that a fragment of separation logic can be faithfully encoded in a first-order automatic verification tool (Chalice).

An Example of Local Reasoning in BI Pointer Logic: the Schorr−Waite Graph Marking Algorithm

The promise of local reasoning in BI pointer logic is shown by an example: the Schorr-Waite graph marking algorithm, giving an evidence that even in a program with no clear separations of data structures, the locality of memory access can still be exploited in a formal proof with Frame Introduction and BI multiplicative connectives and that the resulting veriication becomes signiicantly simpler.

Logical Reasoning for Disjoint Permissions

A general logic framework that supports permission reasoning in separation logic while preserving disjointness is proposed and can be applicable to sophisticated verification tasks such as doing induction over the finiteness of the heap within the object logic or carrying out biabductive inference.