A Foundation for Automated Reasoning About Pointer Programs

Report ID: TR-738-05
Author: Jia, Limin / Walker, David
Date: 2005-10-00
Pages: 28
Download Formats: |PDF|
Abstract:

This paper shows how to use Girard's intuitionistic linear logic extended with arithmetic or other constraints 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 consistent 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, we define a simple imperative programming language with mutable references and arrays and give 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. In other words, if loop invariants are specified in ILC$^{-}$, then the resulting verification conditions are also in ILC$^{-}$. Since verification condition generation is syntax-directed, we obtain a decidable procedure for checking properties of pointer programs.