Issue No. 04 - April (1994 vol. 20)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/32.277574
<p>This paper describes a uniform approach to the automation of verification tasks associated with while statements, representation functions for abstract data types, generic program units, and abstract base classes. Program units are annotated with equations containing symbols defined by algebraic axioms. An operation's axioms are developed by using strategies that guarantee crucial properties such as convergence and sufficient completeness. Sets of axioms are developed by stepwise extensions that preserve these properties. Verifications are performed with the aid of a program that incorporates term rewriting, structural induction, and heuristics based on ideas used in the Boyer-Moore prover. The program provides valuable mechanical assistance: managing inductive arguments and providing hints for necessary lemmas, without which formal proofs would be impossible. The successes and limitations of our approaches are illustrated with examples from each domain.</p>
abstract data types; rewriting systems; program verification; theorem proving; software tools; term rewriting; verification tasks; while statements; representation functions; abstract data types; generic program units; abstract base classes; algebraic axioms; convergence; sufficient completeness; structural induction; Boyer-Moore prover; mechanical assistance
S. Antoy and J. Gannon, "Using Term Rewriting to Verify Software," in IEEE Transactions on Software Engineering, vol. 20, no. , pp. 259-274, 1994.