Results 1 
6 of
6
BI as an Assertion Language for Mutable Data Structures
, 2000
"... Reynolds has developed a logic for reasoning about mutable data structures in which the pre and postconditions are written in an intuitionistic logic enriched with a spatial form of conjunction. We investigate the approach from the point of view of the logic BI of bunched implications of O'Hea ..."
Abstract

Cited by 191 (14 self)
 Add to MetaCart
(Show Context)
Reynolds has developed a logic for reasoning about mutable data structures in which the pre and postconditions are written in an intuitionistic logic enriched with a spatial form of conjunction. We investigate the approach from the point of view of the logic BI of bunched implications of O'Hearn and Pym. We begin by giving a model in which the law of the excluded middle holds, thus showing that the approach is compatible with classical logic. The relationship between the intuitionistic and classical versions of the system is established by a translation, analogous to a translation from intuitionistic logic into the modal logic S4. We also consider the question of completeness of the axioms. BI's spatial implication is used to express weakest preconditions for objectcomponent assignments, and an axiom for allocating a cons cell is shown to be complete under an interpretation of triples that allows a command to be applied to states with dangling pointers. We make this latter a feature, by incorporating an operation, and axiom, for disposing of memory. Finally, we describe a local character enjoyed by specifications in the logic, and show how this enables a class of frame axioms, which say what parts of the heap don't change, to be inferred automatically.
Modular Automatic Assertion Checking with Separation Logic
, 2005
"... Separation logic is a program logic for reasoning about programs that manipulate pointer data structures. We describe a tool, Smallfoot, for checking certain lightweight separation logic specifications. The assertions describe the shapes of data structures rather than their detailed contents, and th ..."
Abstract

Cited by 163 (6 self)
 Add to MetaCart
(Show Context)
Separation logic is a program logic for reasoning about programs that manipulate pointer data structures. We describe a tool, Smallfoot, for checking certain lightweight separation logic specifications. The assertions describe the shapes of data structures rather than their detailed contents, and this allows reasoning to be fully automatic. We illustrate what the tool can do via a sequence of examples which are oriented around novel aspects of separation logic, namely: avoidance of frame axioms (which say what a procedure does not change); embracement of “dirty” features such as memory disposal and address arithmetic; information hiding in the presence of pointers; and modular reasoning about concurrent programs.
A Decidable Fragment of Separation Logic
 In FSTTCS
, 2004
"... We present a fragment of separation logic oriented to linked lists, and study decision procedures for validity of entailments. The restrictions in the fragment are motivated by the stylized form of reasoning done in example program proofs. The fragment includes a predicate for describing linked list ..."
Abstract

Cited by 95 (7 self)
 Add to MetaCart
(Show Context)
We present a fragment of separation logic oriented to linked lists, and study decision procedures for validity of entailments. The restrictions in the fragment are motivated by the stylized form of reasoning done in example program proofs. The fragment includes a predicate for describing linked list segments (a kind of reachability or transitive closure). Decidability is first proved by semantic means: by showing a small model property that bounds the size of potential countermodels that must be checked. We then provide a complete proof system for the fragment, the termination of which furnishes a second decision procedure.
Computability and complexity results for a spatial assertion language for data structures
 IN 21ST CONFERENCE ON FOUNDATIONS OF SOFTWARE TECHNOLOGY AND THEORETICAL COMPUTER SCIENCE, FSTTCS’01, LNCS 2245
, 2001
"... Reynolds, Ishtiaq and O’Hearn have recently developed an approach to reasoning about mutable data structures using an assertion language with spatial conjunction and implication connectives. In this paper we study computability and complexity properties of a subset of the language, which allows st ..."
Abstract

Cited by 64 (5 self)
 Add to MetaCart
Reynolds, Ishtiaq and O’Hearn have recently developed an approach to reasoning about mutable data structures using an assertion language with spatial conjunction and implication connectives. In this paper we study computability and complexity properties of a subset of the language, which allows statements about the shape of pointer structures (such as “there is a link from x to y”) to be made, but not statements about the data held in cells (such as “x is a prime number”). We show that validity, even for this restricted language, is not r.e., but that the quantifierfree sublanguage is decidable. We then consider the complexity of model checking and validity for several fragments.
Automatic verification of pointer programs using grammarbased shape analysis
 In ESOP
, 2005
"... Abstract. We present a program analysis that can automatically discover the shape of complex pointer data structures. The discovered invariants are, then, used to verify the absence of safety errors in the program, or to check whether the program preserves the data consistency. Our analysis extends ..."
Abstract

Cited by 47 (4 self)
 Add to MetaCart
Abstract. We present a program analysis that can automatically discover the shape of complex pointer data structures. The discovered invariants are, then, used to verify the absence of safety errors in the program, or to check whether the program preserves the data consistency. Our analysis extends the shape analysis of Sagiv et al. with grammar annotations, which can precisely express the shape of complex data structures. We demonstrate the usefulness of our analysis with binomial heap construction and the SchorrWaite tree traversal. For a binomial heap construction algorithm, our analysis returns a grammar that precisely describes the shape of a binomial heap; for the SchorrWaite tree traversal, our analysis shows that at the end of the execution, the result is a tree and there are no memory leaks. 1
Tableaux and Resource Graphs for Separation Logic
, 2007
"... Separation Logic (SL) is often presented as an assertion language for reasoning about mutable data structures. As recent results about verification in SL have mainly been achieved from a modelchecking point of view, our aim in this paper is to study Separation Logic from a complementary prooftheo ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
Separation Logic (SL) is often presented as an assertion language for reasoning about mutable data structures. As recent results about verification in SL have mainly been achieved from a modelchecking point of view, our aim in this paper is to study Separation Logic from a complementary prooftheoretic perspective in order to provide results about proofsearch in SL. We begin our study with a fragment of SL, denoted SLP, where first order quantifiers, variables and equality are removed. We first define specific structures, called resource graphs, that capture SLP models by considering heaps as resources via a labelling process. We then provide a tableau calculus that allows us to build such resource graphs from which either proofs, or countermodels can be generated. We finally prove soundess, completeness and termination of our tableau calculus before discussing extensions to various fragments of SL (including full SL) and the related decidability issues.