ILC: A Foundation for Automated Reasoning About Pointer Programs

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.

[1]  Dale Miller,et al.  A multiple-conclusion meta-logic , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[2]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[3]  David Walker,et al.  A Concurrent Logical Framework: The Propositional Fragment , 2003, TYPES.

[4]  Frank Pfenning,et al.  A Focusing Inverse Method Theorem Prover for First-Order Linear Logic , 2005, CADE.

[5]  Frank Pfenning,et al.  Monadic concurrent linear logic programming , 2005, PPDP.

[6]  M. E. Szabo,et al.  The collected papers of Gerhard Gentzen , 1969 .

[7]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[8]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[9]  Peter W. O'Hearn,et al.  A Decidable Fragment of Separation Logic , 2004, FSTTCS.

[10]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[11]  Dale Miller,et al.  Logic programming in a fragment of intuitionistic linear logic , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[12]  Sergey Berezin,et al.  CVC Lite: A New Implementation of the Cooperating Validity Checker Category B , 2004, CAV.

[13]  Alexander Aiken,et al.  Flow-sensitive type qualifiers , 2002, PLDI '02.

[14]  George C. Necula,et al.  Safe kernel extensions without run-time checking , 1996, OSDI '96.

[15]  Hongwei Xi,et al.  Safe Programming with Pointers Through Stateful Views , 2005, PADL.

[16]  Frank Pfenning,et al.  Eliminating array bound checking through dependent types , 1998, PLDI.

[17]  David Walker,et al.  Alias Types , 2000, ESOP.

[18]  David Walker,et al.  The logical approach to stack typing , 2003, TLDI '03.

[19]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[20]  Xin Yu,et al.  MetaPRL - A Modular Logical Environment , 2003, TPHOLs.

[21]  Peter W. O'Hearn On bunched typing , 2003, J. Funct. Program..

[22]  Peter W. O'Hearn,et al.  Computability and Complexity Results for a Spatial Assertion Language for Data Structures , 2001, APLAS.

[23]  David L. Detlefs,et al.  An Overview of the Extended Static Checking System , 2007 .

[24]  David Walker,et al.  Certifying compilation for a language with stack allocation , 2005, 20th Annual IEEE Symposium on Logic in Computer Science (LICS' 05).

[25]  J. Gregory Morrisett,et al.  L3: A Linear Language with Locations , 2007, Fundam. Informaticae.

[26]  Peter W. O'Hearn,et al.  BI as an assertion language for mutable data structures , 2001, POPL '01.

[27]  David Walker,et al.  Reasoning about hierarchical storage , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[28]  David Walker,et al.  An effective theory of type refinements , 2003, ICFP '03.

[29]  Peter W. O'Hearn,et al.  Symbolic Execution with Separation Logic , 2005, APLAS.

[30]  Robert DeLine,et al.  Enforcing high-level protocols in low-level software , 2001, PLDI '01.

[31]  Patrick Lincoln,et al.  First-Order Linear Logic without Modalities is NEXPTIME-Hard , 1994, Theor. Comput. Sci..

[32]  Frank Pfenning,et al.  A linear logical framework , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.