Program abstraction and instantiation
- 1 July 1985
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 7 (3) , 446-477
- https://doi.org/10.1145/3916.3986
Abstract
Our goal is to develop formal methods for abstracting a given set of programs into a program schema and for instantiating a given schema to satisfy concrete specifications. Abstraction and instantiation are two important phases in software development which allow programmers to apply knowledge learned in the solutions of past problems when faced with new situations. For example, from two programs using a linear (or binary) search technique, an abstract schema can be derived that embodies the shared idea and that can be instantiated to solve similar new problems. Along similar lines, the development and application of program transformations are considered. We suggest the formulation of analogies as a basic tool in program abstraction. An analogy is first sought between the specifications of the given programs; this yields an abstract specification that may be instantiated to any of the given concrete specifications. The analogy is then used as a basis for transforming the existing programs into an abstract schema that represents the embedded technique, with the invariant assertions and correctness proofs of the given programs helping to verify and complete the analogy. A given concrete specification of a new problem may then be compared with the abstract specification of the schema to suggest an instantiation of the schema that yields a correct program.Keywords
This publication has 36 references indexed in Scilit:
- General Branch and Bound, and its relation to A∗ and AO∗Artificial Intelligence, 1984
- Program developmentsCommunications of the ACM, 1983
- Program Transformation SystemsACM Computing Surveys, 1983
- Learning and reasoning by analogyCommunications of the ACM, 1980
- Syntactic source to source transforms and program manipulationCommunications of the ACM, 1979
- Notes on recursion eliminationCommunications of the ACM, 1977
- Logical analysis of programsCommunications of the ACM, 1976
- Proving Theorems about LISP FunctionsJournal of the ACM, 1975
- Structured Programming with go to StatementsACM Computing Surveys, 1974
- A paradigm for reasoning by analogyArtificial Intelligence, 1971