Combining algebraic and predicative specifications in Larch

  • J. J. Horning
Advanced Seminar On The Role Of Semantics In Software Development The Role Of Semantics In The Development Of Software Systems
Part of the Lecture Notes in Computer Science book series (LNCS, volume 186)


Recently there has been a great deal of theoretical interest in formal specifications. However, there has not been a corresponding increase in their use for software development. Meanwhile, there has been significant convergence among formal specification methods intended for practical use.

The Larch Project is developing tools and techniques intended to aid in the productive use of formal specifications. This talk presents the combination of ideas, both old and new, that we are currently exploring.

One reason why our previous specification methods were not very successful was that we tried to make a single language serve too many purposes. To focus the Larch Project, we made some fairly strong assumptions about the problem we were addressing.

Each Larch specification has two parts, written in different languages. Larch interface languages are used to specify program units (e.g., procedures, modules, types). Their semantics is given by translation to predicate calculus. Abstractions appearing in interface specifications are themselves specified algebraically, using the Larch Shared Language.

A series of examples will be used to illustrate the use of the Larch Shared Language and the Larch/CLU interface language. The talk will conclude with notes on the key design choices for each of the languages, and for the method of combining the two parts of a specification.


  1. [ADJ 78]
    J. A. Goguen, J. W. Thatcher, and E. G. Wagner, “Initial Algebra Approach to the Specification, Correctness, and Implementation of Abstract Data Types,” In R. T. Yeh (ed.), Current Trends in Programming Methodology, Vol. IV, Data Structuring, Prentice-Hall, Englewood Cliffs, 1978.Google Scholar
  2. [Burstall and Goguen 77]
    R. M. Burstall and J. A. Goguen, “Putting Theories Together to Make Specifications,” Proc. 5th International Joint Conference on Atificial Intelligence, Cambridge, MA, 1977, 1045–1058.Google Scholar
  3. [Burstall and Goguen 81]
    —, “An Informal Introduction to Specifications Using CLEAR,” in R. Boyer and J. Moore (eds.), The Correctness Problem in Computer Science, Academic Press, New York, 1981, 185–213.Google Scholar
  4. [Forgaard 84]
    R. Forgaard, “A Program for Generating and Analyzing Term Rewriting Systems,” S.M. Thesis, Laboratory for Computer Science, Massachusetts Institute of Technology, MIT/LCS/TR-99, 1984.Google Scholar
  5. [Guttag 75]
    J. V. Guttag, “The Specification and Application to Programming of Abstract Data Types,” Ph.D. Thesis, Computer Science Department, University of Toronto, 1975.Google Scholar
  6. [Guttag and Horning 80]
    — and J. J. Horning, “Formal Specification as a Design Tool,” Proc. ACM Symposium on Principles of Programming Languages, Las Vegas, Jan. 1980, 251–261.Google Scholar
  7. [Guttag and Horning 83]
    —, “Preliminary Report on the Larch Shared Language,” Technical Report MIT/LCS/TR-307 and Xerox PARC CSL-83-6, 1983.Google Scholar
  8. [Guttag and Horning 85a]
    —, “Report on the Larch Shared Language,” Science of Computer Programming, to appear.Google Scholar
  9. [Guttag and Horning 85b]
    —, “A Larch Shared Language Handbook,” Science of Computer Programming, to appear.Google Scholar
  10. [Guttag and Horning 85c]
    —, “An Overview of the Larch Family of Specification Languages,” in draft.Google Scholar
  11. [Guttag, Horning, and Wing 82]
    —, and J. M. Wing, “Some Notes on Putting Formal Specifications to Productive Use,” Science of Computer Programming, vol. 2, Dec. 1982, 53–68.Google Scholar
  12. [Guttag, Horning, and Wing 85]
    —, “Preliminary Report on the Larch/CLU Interface Language,” in draft.Google Scholar
  13. [Hehner 84]
    E. C. R. Hehner, “Predicative Programming, Parts I and II,” Comm. ACM, vol. 27, Feb. 1984, 134–151.Google Scholar
  14. [Lescanne 83]
    P. Lescanne, “Computer Experiments with the REVE Term Rewriting System Generator,” Proc. ACM Symposium on Principles of Programming Languages, Austin, Jan. 1983, 99–108.Google Scholar
  15. [Musser 80]
    D. R. Musser, “Abstract Data Type Specification in the Affirm System,” IEEE Transactions on Software Engineering, vol. 1, 1980, 24–32.Google Scholar
  16. [Nyborg 84]
    Proc. Workshop on Combining Specification Methods, Nyborg, May 1984, Springer-Verlag.Google Scholar
  17. [Wand 79]
    M. Wand, “Final Algebra Semantics and Data Type Extensions,” Journal of Computer and System Sciences, vol. 19, 1979, 27–44.Google Scholar
  18. [Wing 83]
    J. M. Wing, “A Two-Tiered Approach to Specifying Programs,” Ph.D. Thesis, Laboratory for Computer Science, Massachusetts Institute of Technology, MIT/LCS/TR-299, May 1983.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1985

Authors and Affiliations

  • J. J. Horning
    • 1
  1. 1.Systems Research Center Digital Equipment CorporationPalo AltoUSA

Personalised recommendations