VLISP: a verified implementation of Scheme
Lisp and Symbolic Computation
On-the-fly garbage collection: an exercise in cooperation
Communications of the ACM
An exercise in proving parallel programs correct
Communications of the ACM
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Verifying a Garbage Collection Algorithm
Proceedings of the 11th International Conference on Theorem Proving in Higher Order Logics
Verifying the Safety of a Practical Concurrent Garbage Collector
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
Local reasoning about a copying garbage collector
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A general framework for certifying garbage collectors and their mutators
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Automated verification of practical garbage collectors
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Machine-code verification for multiple architectures: an application of decompilation into logic
Proceedings of the 2008 International Conference on Formal Methods in Computer-Aided Design
Verified LISP Implementations on ARM, x86 and PowerPC
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
CSL'06 Proceedings of the 20th international conference on Computer Science Logic
Developer-oriented correctness proofs a case study of Cheney's algorithm
ICFEM'11 Proceedings of the 13th international conference on Formal methods and software engineering
Proof-producing synthesis of ML from higher-order logic
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.03 |
Garbage collectors are very hard to implement correctly due to their low-level manipulation of memory. In this paper, we construct a copying garbage collector which we have proved to be functionally correct. Our verification proof is structured as a sequence of refinements to aid clarity and proof reuse; it is the first to map implementations into three different machine languages and, unlike some noteworthy published proofs, our verified implementations of memory allocation handle termination and the 'out-of-memory' case properly. The work presented here has been developed in the HOL4 theorem prover.