|
Department of Computer Science May 3, 2005 SPEAKER: John Reynolds,
Carnegie Mellon University ABSTRACT: In joint work with Peter O'Hearn and others, based on
early ideas of Burstall, we have developed an extension of Hoare logic
that permits reasoning about low-level imperative programs that use shared
mutable data structure. The simple imperative programming language is extended with commands (not expressions) for accessing and modifying shared structures, and for explicit allocation and deallocation of storage. Assertions are extended by introducing a ``separating conjunction'' that asserts that its subformulas hold for disjoint parts of the heap, and a closely related ``separating implication''. Coupled with the inductive definition of predicates on abstract data structures, this extension permits the concise and flexible description of structures with controlled sharing. We will survey the current development of this logic, including extensions that permit unrestricted address arithmetic, dynamically allocated arrays, recursive procedures, and shared variable concurrency. We will also discuss promising future directions. |