skip to main content
10.5555/800078.802519acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article
Free Access

The evolution of programs: Program abstraction and instantiation

Published:09 March 1981Publication History

ABSTRACT

Our goal is to develop techniques for abstracting a given set of concrete programs into a program schema and for instantiating a schema to satisfy concrete specifications. For example, from two programs using the binary-search method, one to compute quotients and another to compute cube-roots, an abstract schema is derived that embodies the method and that can be instantiated to solve similar new problems.

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. The invariant assertions and correctness proofs of the given programs are used to complete the analogy.

References

  1. 1.R. Brown {Oct. 1976}, Reasoning by analogy, Working paper 132, Artificial Intelligence Laboratory, MIT, Cambridge, MA.]]Google ScholarGoogle Scholar
  2. 2.T.W. Chen and N.V. Findler {Dec. 1976}, Toward analogical reasoning in problem solving by computers, Technical report 115, Dept. of Computer Science, State Univ. of New York, Buffalo, NY.]]Google ScholarGoogle Scholar
  3. 3.J. Darlington and R.M. Burstall {Mar. 1976}, A system which automatically improves programs, Acta Informatica, vol. 6, no. 1, pp. 41-60.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4.N. Dershowitz {Nov. 1978}, The evolution of programs, Ph.D. thesis, Dept. of Applied Mathematics, Weizmann Inst. of Science, Rehovot, Israel; available as Report R-80-1011, Dept. of Computer Science, Univ. of Illinois, Urbana, IL.]]Google ScholarGoogle Scholar
  5. 5.N. Dershowitz and Z. Manna {July 1975}, On automating structured programming, Proc. Colloq. IRIA on Proving and Improving Programs, Arc-et-Senans, France.]]Google ScholarGoogle Scholar
  6. 6.N. Dershowitz and Z. Manna {Nov. 1977}, The evolution of programs: Automatic program modification, IEEE Software Engineering, vol. SE-3, no. 6, pp. 377-385.]]Google ScholarGoogle Scholar
  7. 7.E.W. Dijkstra {1972}, Notes on structured programming, in O.J. Dahl, E.W. Dijkstra, and C.A.R. Hoare, Structured Programming, Academic Press, London.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8.A.G. Duncan and L. Yelowitz {July 1979}, Studies in abstract/concrete mappings in proving algorithm correctness, Proc. Sixth EATCS Colloq. on Automata, Languages and Programming, Graz, Austria, pp. 218-229.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9.S.L. Gerhart {Apr. 1975}, Knowledge about programs: A model and case study, Proc. Intl. Conf. on Reliable Software, Los Angeles, CA, pp. 88-95.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10.S.L. Gerhart and L. Yelowitz {Dec. 1976}, Control structure abstractions of the backtracking programming technique, IEEE Software Engineering, vol. SE-2, no. 4, pp. 285-292.]]Google ScholarGoogle Scholar
  11. 11.G. Huet and B. Lang {Dec. 1978}, Proving and applying program transformations expressed with second-order patterns, Acta Informatica, vol. 11, no. 1, pp. 31-55.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 12.R.E. Kling {Aug. 1971}, Reasoning by analogy with applications to heuristic problem solving: A case study, Ph.D. thesis, Stanford Univ., Stanford, CA.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13.Z. Manna and R.J. Waldinger {Summer 1975}, Reasoning and knowledge in program synthesis, Artificial Intelligence, vol. 6, no. 2, pp. 175-208.]]Google ScholarGoogle ScholarCross RefCross Ref
  14. 14.J. Misra {Sept. 1978}, An approach to formal definitions and proofs of programming principles, IEEE Software Engineering, vol. SE-4, no. 5, pp. 410-413.]]Google ScholarGoogle Scholar
  15. 15.D.A. Plaisted {July 1980}, Abstraction mappings in mechanical theorem proving, Proc. Fifth Conf. on Automated Deduction, Les Arcs, France, pp. 264-280.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16.G.J. Sussman {1975}, A computer model of skill acquisition, American Elsevier, New York.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17.J.W. Ulrich and R. Moll {Aug. 1977}, Program synthesis by analogy, Proc. ACM Symp. on Artificial Intelligence and Programming Languages, Rochester, NY, pp. 22-28.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18.L. Yelowitz and A.G. Duncan {Aug. 1977}, Abstractions, instantiations and proofs of marking algorithms, Proc. ACM Symp. on Artificial Intelligence and Programming Languages, Rochester, NY, pp. 13-21.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The evolution of programs: Program abstraction and instantiation

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader