Abstract Data Type Specification in the Affirm System

This paper describes the data type definition facilities of the AFFIRM system for program specification and verification. Following an overview of the system, we review the rewrite rule concepts that form the theoretical basis for its data type facilities. The main emphasis is on methods of ensuring convergence (finite and unique termination) of sets of rewrite rules and on the relation of this property to the equational and inductive proof theories of data types.

[1]  Zohar Manna,et al.  Proving termination with multiset orderings , 1979, CACM.

[2]  Richard D. Jenks The SCRATCHPAD language , 1974, SIGS.

[3]  HuetGérard Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980 .

[4]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[5]  Stephen N. Zilles,et al.  Introduction to Data Algebra , 1979, Abstract Software Specifications.

[6]  John V. Guttag,et al.  Notes on Type Abstraction , 1978, Program Construction.

[7]  Warren Teitelman,et al.  The interlisp reference manual , 1974 .

[8]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[9]  Robert S. Boyer,et al.  A Lemma Driven Automatic Theorem Prover for Recursive Function Theory , 1977, IJCAI.

[10]  John V. Guttag,et al.  Notes on Type Abstraction (Version 2) , 1980, IEEE Transactions on Software Engineering.

[11]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1976, Software Pioneers.

[12]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1977, CACM.

[13]  Gérard Huet,et al.  On the Uniform Halting Problem for Term Rewriting Systems , 1978 .

[14]  D. C. Luckham,et al.  A methodology for verifying programs , 1975, Reliable Software.

[15]  James H. Morris,et al.  Subgoal induction , 1977, CACM.

[16]  D. I. Good,et al.  An interactive program verification system , 1975, IEEE Transactions on Software Engineering.

[17]  Richard J. Lipton,et al.  On the Halting of Tree Replacement Systems. , 1977 .

[18]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[19]  J. J. Horning,et al.  Report on the programming language Euclid , 1977, SIGP.

[20]  David R. Musser,et al.  On proving inductive properties of abstract data types , 1980, POPL '80.

[21]  W. F. Burger,et al.  Gypsy: A language for specification and implementation of verifiable programs , 1977, Language Design for Reliable Software.

[22]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[23]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[24]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[25]  Ellis Horowitz,et al.  Abstract data types and software validation , 1978, CACM.

[26]  W. W. Bledsoe,et al.  A Man-Machine Theorem-Proving System , 1973, IJCAI.

[27]  Ellis Horowitz,et al.  The design of data type specifications , 1976, ICSE '76.

[28]  Joseph A. Goguen,et al.  Some design principles and theory for OBJ-O, a language to express and execute algebraic specification for programs , 1978, Mathematical Studies of Information Processing.

[29]  Derek C. Oppen,et al.  A simplifier based on efficient decision algorithms , 1978, POPL.

[30]  Donald E. Knuth,et al.  Simple Word Problems in Universal Algebras††The work reported in this paper was supported in part by the U.S. Office of Naval Research. , 1970 .

[31]  Butler W. Lampson,et al.  Proof rules for the programming language Euclid , 1978, Acta Informatica.

[32]  Norihisa Suzuki,et al.  Verifying programs by algebraic and logical reduction , 1975, Reliable Software.