A Derivation Oriented Proof of the Schorr-Waite Marking Algorithm

There are many ways to formulate and present program proofs. Some of the inherent problems are finding and formally stating specifications and invariants, developing and proving a basis of properties for the program's data types and problem domain, overcoming the sheer complexity and length of any proof (formal or informal), and avoiding errors in the proof. This paper uses an approach orthogonal to that presented in [Gries], which deals mainly with the final, concrete, fully optimized program. Instead, our approach stresses finding, stating, and proving parts of the invariants for the final program in clearly separated stages of a program derivation from a relatively simple, abstract, non-optimized program.