Abstract

We propose a novel logic, called Frame Logic (FL), that extends first-order logic (with recursive definitions) using a construct textit{Sp}(cdot ) that captures the implicit supports of formulas— the precise subset of the universe upon which their meaning depends. Using such supports, we formulate proof rules that facilitate frame reasoning elegantly when the underlying model undergoes change. We show that the logic is expressive by capturing several data-structures and also exhibit a translation from a precise fragment of separation logic to frame logic. Finally, we design a program logic based on frame logic for reasoning with programs that dynamically update heaps that facilitates local specifications and frame reasoning. This program logic consists of both localized proof rules as well as rules that derive the weakest tightest preconditions in FL.

Highlights

  • Program logics for expressing and reasoning with programs that dynamically manipulate heaps is an active area of research

  • We show that Frame Logic (FL) formulae can be translated to vanilla first-order logic with recursive definitions (FO-RD) logic; in other words, the semantics for the support of a formula can be captured in FO-RD itself

  • We illustrate our logic using several examples drawn from program verification; we show how to express various data-structure definitions and the elements they contain and various measures for them using FL formulas

Read more

Summary

Introduction

Program logics for expressing and reasoning with programs that dynamically manipulate heaps is an active area of research. The research on separation logic has argued convincingly that it is highly desirable to have localized logics that talk about small states (heaplets rather than the global heap), and the ability to do frame reasoning. Separation logic achieves this objective by having a tight heaplet semantics and using special operators, primarily a separating conjunction operator ∗ and a separating implication operator (the magic wand −∗). We ask a fundamental question: can classical logics (such as FOL and FOL with recursive definitions) be extended to support localized specifications and frame reasoning? Supports will be subsets of locations of the heap, which is appropriate as these are the domains of pointers that change when a program updates a heap

Methods
Discussion
Conclusion
Full Text
Published version (Free)

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