The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
An efficient machine-independent procedure for garbage collection in various list structures
Communications of the ACM
A Discipline of Programming
A symmetric, top-down structured approach to computer program/proof development.
A symmetric, top-down structured approach to computer program/proof development.
Studies in program correctness.
Studies in program correctness.
Automatic verification of programs with complex data structure.
Automatic verification of programs with complex data structure.
Program abstraction and instantiation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A bibliography on garbage collection and related topics
ACM SIGPLAN Notices
IEEE Transactions on Software Engineering - Special issue: best papers of the sixth international workshop on Petri nets and performance models (PNPM'95)
Garbage Collection of Linked Data Structures
ACM Computing Surveys (CSUR)
Combining Algebraic and Algorithmic Reasoning: An Approach to the Schorr-Waite Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Derivation of efficient DAG marking algorithms
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The evolution of list-copying algorithms and the need for structured program verification
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The evolution of programs: Program abstraction and instantiation
ICSE '81 Proceedings of the 5th international conference on Software engineering
Automated verification of the deutsch-schorr-waite tree-traversal algorithm
SAS'06 Proceedings of the 13th international conference on Static Analysis
Hi-index | 0.00 |
A detailed look is taken at the problem of factoring program proofs into a proof of the underlying algorithm, followed by a proof of correct implementation of abstract variables at the concrete level. We do this considering four different concrete “marking” algorithms and formulating a single abstract algorithm and set of abstract specifications that can be instantiated to each of the four concrete cases. An intermediate assertion, as well as sufficient conditions for correct initialization, invariance, and correctness at termination are given at the abstract level. Proofs at the concrete level are then given by exhibiting appropriate mapping functions (from the concrete state vector to the abstract variables), and showing that the sufficient conditions are true. Proofs of termination are given by instantiating “termination schemas”.