This paper is an extended case study using a high-level approach to the verification of graph transformation algorithms: To represent sharing, graphs are considered as trees with additional pointers, and algorithms manipulating them are essentially primitive recursive traversals written in a monadic style. With this, we achieve almost trivial termination arguments and can use inductive reasoning principles for showing the correctness of the algorithms. We illustrate the approach with the verification of a BDD package which is modular in that it can be instantiated with different implementations of association tables for node lookup. We have also implemented a garbage collector for freeing association tables from unused entries. Even without low-level optimizations, the resulting implementation is reasonably efficient.
Isabelle 2011 theories: BDD_isabelle2011.tar.gz
@INPROCEEDINGS{GiorginoSt2012Correctness,
author = {Giorgino, Mathieu and Strecker, Martin},
title = {Correctness of Pointer Manipulating Algorithms Illustrated by a Verified
BDD Construction},
year = {2012},
editor = {Dimitra Giannakopoulou and Dominique M{\'e}ry},
booktitle = {FM 2012: Formal Methods - 18th International Symposium,
Paris, France, August 27-31, 2012. Proceedings},
pages = {202-216},
publisher = {Springer},
series = {Lecture Notes in Computer Science},
volume = {7436},
language = {english},
}