Imperial College London
- Uri D Zarfaty
This thesis introduces Context Logic, a novel spatial logic which was developed to allow local Hoare-style reasoning about tree update, but which also permits reasoning about more general data update. Spatial logics have previously been used to describe properties of tree-like structures (as in Ambient Logic) and to reason locally about dynamic updates of heaps (as in Separation Logic). However, simple adaptations of the Ambient Logic are not expressive enough to capture dynamic updates of trees. Instead, one must reason explicitly about tree contexts in order to capture updates throughout the tree. For example, a typical update removes a portion of data and replaces it by inserting new data in the same place. Context Logic allows us to reason about both the data and the place of insertion. The thesis describes the general theory of Context Logic, presents a number of extensions and applications, and shows that Context Logic is a generalisation of the Logic of Bunched Implication, the underlying theory of Separation Logic. The thesis then uses Context Logic to reason locally about tree, heap and term update languages, adapting the local reasoning framework of Separation Logic and providing a generalisation of its Frame Rule. Completeness results for these program logics are provided by deriving the weakest preconditions of the update commands from the command axioms. Finally, the thesis introduces an extended imperative update language for manipulating trees with pointers, which incorporates path queries and atomic commands that act at multiple locations. Reasoning about this raises an important point regarding the link between local reasoning and local specifications.