×

ILC: A foundation for automated reasoning about pointer programs. (English) Zbl 1178.03077

Sestoft, Peter (ed.), Programming languages and systems. 15th European symposium on programming, ESOP 2006, held as part of the joint European conferences on theory and practice of software, ETAPS 2006, Vienna, Austria, March 27–28, 2006. Proceedings. Berlin: Springer (ISBN 3-540-33095-X/pbk). Lecture Notes in Computer Science 3924, 131-145 (2006).
Summary: This paper shows how to use Girard’s intuitionistic linear logic extended with a classical sublogic to reason about pointer programs. More specifically, first, the paper defines the proof theory for ILC (Intuitionistic Linear logic with Constraints) and shows it is well-defined via a proof of cut elimination. Second, inspired by prior work of O’Hearn, Reynolds, and Yang, the paper explains how to interpret linear logical formulas as descriptions of a program store. Third, this paper defines a simple imperative programming language with mutable references and arrays and gives verification condition generation rules that produce assertions in ILC. Finally, we identify a fragment of ILC, ILC\({}^{-}\), that is both decidable and closed under generation of verification conditions. Since verification condition generation is syntax-directed, we obtain a decidable procedure for checking properties of pointer programs.
For the entire collection see [Zbl 1103.68010].

MSC:

03F52 Proof-theoretic aspects of linear logic and other substructural logics
03B70 Logic in computer science
68N30 Mathematical aspects of software engineering (specification, verification, metrics, requirements, etc.)

Software:

ESC/Java; Spec#
Full Text: DOI