Publication | Closed Access
Separation logic: a logic for shared mutable data structures
2.1K
Citations
14
References
2003
Year
Unknown Venue
EngineeringStructured DataComputer ArchitectureWell-founded SemanticsMutable Data StructuresFormal VerificationLogic ProgrammingData IntegrationProgram LogicData ManagementHigh-level Programming LanguageProgramming Language TheoryComputer ScienceDatabase TheorySeparating ConjunctionDeclarative ProgrammingAutomated ReasoningProgram AnalysisFormal MethodsMutable Data StructureConcurrent Data Structure
An extension of Hoare logic was developed to reason about low‑level imperative programs that manipulate shared mutable data structures. The paper surveys the current development of this logic, covering extensions for unrestricted address arithmetic, dynamically allocated arrays, and recursive procedures, and outlines promising future directions. The logic extends a simple imperative language with commands for accessing and modifying shared structures, explicit allocation and deallocation, and introduces a separating conjunction and implication to assert properties over disjoint heap parts, together with inductive predicates for abstract data structures.
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. In this paper, we survey the current development of this program logic, including extensions that permit unrestricted address arithmetic, dynamically allocated arrays, and recursive procedures. We also discuss promising future directions.
| Year | Citations | |
|---|---|---|
Page 1
Page 1