The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
VERIFICATION OF PROGRAMS OPERATING ON STRUCTURED DATA
VERIFICATION OF PROGRAMS OPERATING ON STRUCTURED DATA
Proof techniques for hierarchically structured programs
Communications of the ACM
Correctness of data representations (Extended Abstract): Pointers in high level languages
Proceedings of the 1976 conference on Data : Abstraction, definition and structure
Logical Structure Specification and data type definition
ACM '79 Proceedings of the 1979 annual conference
ACM SIGPLAN Notices
Verifying low-level implementations of high-level datatypes
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Recent developments in the theory of data structures
Computer Languages
Pointers and data abstractions in high level languages-I: Language proposals
Computer Languages
Data structures and program correctness: Bridging the gap
Computer Languages
Hi-index | 0.02 |
In order to prove the correctness of a computer program, one must be able to characterize the data in the program. Proofs by the inductive assertion method require the construction of concise, precise assertions to describe the data. This paper presents some techniques for characterizing data structures which can be used to build adequate assertions. New primitive relations are introduced for describing intra-structural relationships. These primitives form the basis for two important concepts: The invariant of a structure is a concise characterization of a structural class. A representation function is a mapping from a structure to a corresponding abstract data object; this concept provides a means for expressing relationships between a structure and other data, and among the values of a structure over time. By means of verification lemmas, these concepts can be integrated into proofs of correctness, and the proofs as well as the assertions can be dramatically simplified. An example program is presented which demonstrates the use of these concepts in constructing the assertions, and the resulting proof of correctness is outlined.