The R*-tree: an efficient and robust access method for points and rectangles
SIGMOD '90 Proceedings of the 1990 ACM SIGMOD international conference on Management of data
The hB-tree: a multiattribute indexing method with good guaranteed performance
ACM Transactions on Database Systems (TODS)
A general solution of the n-dimensional B-tree problem
SIGMOD '95 Proceedings of the 1995 ACM SIGMOD international conference on Management of data
ACM Computing Surveys (CSUR)
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Frame rules from answer types for code pointers
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Toward a verified relational database management system
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mechanized verification with sharing
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
A simple abstraction for complex concurrent indexes
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Verification of B+ trees: an experiment combining shape analysis and interactive theorem proving
SEFM'11 Proceedings of the 9th international conference on Software engineering and formal methods
Hi-index | 0.00 |
The B+ tree is an ordered tree structure with a fringe list. It is the most widely used data structure for data organisation and searching in database systems specifically, and, probably, computing in general. In this paper, we apply two techniques from programming language theory to B+ trees: operational semantics, in the form of an abstract machine, and separation logic. We use an abstract machine to give a precise and tractable formalisation of the operations on B+ trees. Separation logic is then used to formalise a data structure invariant for B+ trees and to establish correctness by showing that the invariant is preserved by the operations. As usual in separation logic, a frame property is essential for keeping the reasoning local. In our setting, that means that we concentrate on the subtree reached from the top of the stack of the abstract machine, while the remainder of the B+ tree stays invariant. A particularly attractive feature of this approach is the smooth way that proofs can cope with algorithms that begin with a tree descent and switch to fringe list traversal.