Summary
The program development process is viewed as a sequence of implementation steps leading from a specification to a program. Based on an elementary notion of refinement, two notions of implementation are studied: constructor implementations which involve a construction “on top of” the implementing specification, and abstractor implementations which additionally provide for abstraction from some details of the implemented specification. These subsume most formal notions of implementation in the literature. Both kinds of implementations satisfy a vertical composition and a (modified) horizontal composition property. All the definitions and results are shown to generalise to the framework of an arbitrary institution, and a way of changing institutions during the implementation process is introduced. All this is illustrated by means of simple concrete examples.
Similar content being viewed by others
References
Arbib, M.A., Manes, E.G.: Arrow, Structures and Functors: the Categorical Imperative. New York, London: Academic Press 1975
Astesiano, E., Mascari, G.F., Reggio, G., Wirsing, M.: On the parameterized algebraic specification of concurrent systems. Proc. 10th Colloq. on Trees in Algebra and Programming, Joint Conf. on Theory and Practice of Software Development (TAPSOFT). Lect. Notes Comput. Sci. Vol. 185, pp. 342–358. Berlin, Heidelberg, New York: Springer 1985
Astesiano, E., Reggio, G.: A unifying viewpoint for the constructive specification of cooperation, concurrency and distribution. Quaderni CNET no. 115, ETS Pisa (1983)
Barwise, K.J.: Axioms for abstract model theory. Ann. Math. Log. 7, 221–265 (1974)
Bauer, F.L., Broy, M., Dosch, W., Gnatz, R., Geiselbrechtinger, F., Hesse, W., Krieg-Brückner, B., Laut, A., Matzner, T., Möller, B., Partsch, H., Pepper, P., Samelson, K., Wirsing, M., Wössner, H.: Report on a wide spectrum language for program specification and development. Report TUM-I8104, Technische Univ. München (1981). See also: The Wide Spectrum Language CIP-L. Lect. Notes Comput. Sci. Vol. 183. Berlin, Heidelberg, New York: Springer 1985
Bauer, F.L. Broy, M., Dosch, W., Gnatz, R., Krieg-Brückner, B., Laut, A., Luckmann, M., Matzner, T., Möller, B., Partsch, H., Papper, P., Samelson, K., Steinbrüggen, R., Wirsing, M., Wössner, H.: Programming in a wide spectrum language: a collection of examples. Sci. Comput. Prog. 1, 73–114 (1981)
Bergstra, J.A., Meyer, J.J.: I/O computable data structures. SIGPLAN Notices 16, 27–32 (1981)
Bernot, G., Bidoit, M., Choppy, C.: Abstract implementations and correctness proofs. Proc. Symp. on Theoretical Aspects of Computer Science, Saarbrücken. Lect. Notes Comput. Sci. Vol. 210, pp. 236–251. Berlin, Heidelberg, New York: Springer 1986
Bloom, S.L., Wagner, E.G.: Many-sorted theories and their algebras with some applications to data types. In: Algebraic Methods in Semantics. Nivat, M., Reynolds, J.C. (eds.), pp. 133–168. Cambridge: University Press 1985
Broy, M., Möller, B., Pepper, P., Wirsing, M.: Algebraic implementations preserve program correctness. Sci. Comput. Prog. 7, 35–53 (1986)
Broy, M., Wirsing, M.: Partial abstract types. Acta Inf. 18, 47–64 (1982)
Burmeister, P.: A Model Theoretic Approach to Partial Algebras. Berlin: Akademie-Verlag 1986
Burstall, R.M., Goguen, J.A.: Putting together theories to make specifications. Proc. 5th Intl. Joint Conf. on Artificial Intelligence, pp. 1045–1058. Cambridge 1977
Burstall, R.M., Goguen, J.A.: The semantics of Clear, a specification language. Proc. of Advanced Course on Abstract Software Specifications, Copenhagen. Lect. Notes Comput. Sci. Vol. 86, pp. 292–332. Berlin, Heidelberg, New York: Springer 1980
Burstall, R.M., Goguen, J.A.: Algebras, theories and freeness: an introduction for computer scientists. Proc. 1981 Marktoberdorf NATO Summer School. Reidel (1982)
Burstall, R.M., MacQueen, D.B., Sannella, D.T.: HOPE: an experimental applicative language. Proc. 1980 LISP Conference, pp. 136–143. Stanford 1980
Dubois, E., Levy, N., Souquieres, J.: Formalising restructuring operators in a specification process. Proc. ESEC'87, Strasbourg 1987
de Nicola, R., Hennessy, M.C.B.: Testing equivalences for processes. Theor. Comput. Sci. 34, 83–133 (1984)
Ehrich, H.-D.: On realization and implementation. Proc. 10th Intl. Symp. on Mathematical Foundations of Computer Science, Strbske Pleso, Czechoslovakia. Lect. Notes Comput. Sci. Vol. 118, pp. 271–280. Berlin, Heidelberg, New York: Springer 1981
Ehrich, H.-D.: On the theory of specification, implementation, and parametrization of abstract data types. J. Assoc. Comput. Mach. 29, 206–227 (1982)
Ehrig, H., Fey, W., Hansen, H.: ACT ONE: an algebraic specification language with two levels of semantics. Report Nr. 83-03, Institut für Software und Theoretische Informatik, Technische Univ. Berlin 1983
Ehrig, H., Kreowski, H.-J.: Parameter passing commutes with implementation of parameterized data types. Proc. 9th Intl. Colloq. on Automata, Languages and Programming, Aarhus, Denmark. Lect. Notes Comput. Sci. Vol. 140, pp. 197–211. Berlin, Heidelberg, New York: Springer 1982
Ehrig, H., Kreowski, H.-J., Mahr, B., Padawitz, P.: Algebraic implementation of abstract data types. Theor. Comput. Sci. 20, 209–263 (1982)
Ehrig, H., Kreowski, H.-J., Thatcher, J.W., Wagner, E.G., Wright, J.B.: Parameterized data types in algebraic specification languages (short version). Proc. 7th Intl. Colloq. on Automata, Languages and Programming, Noordwijkerhout, Netherlands. Lect. Notes Comput. Sci. Vol. 85, pp. 157–168. Berlin, Heidelberg, New York: Springer 1980
Ehrig, H., Mahr, B.: Fundamentals of Algebraic Specification I: Equations and Initial Semantics. EATCS Monographs on Theoretical Computer Science. Berlin, Heidelberg, New York: Springer 1985
Ehrig, H., Thatcher, J.W., Lucas, P., Zilles, S.N.: Denotational and initial algebra semantics of the algebraic specification language LOOK. Draft report, IBM research 1982
Ehrig, H., Wagner, E.G., Thatcher, J.W.: Algebraic specifications with generating constraints. Proc. 10th Intl. Colloq. on Automata, Languages and Programming, Barcelona. Lect. Notes Comput. Sci. Vol. 154, pp. 188–202. Berlin, Heidelberg, New York: Springer 1983
Futatsugi, K., Goguen, J.A., Jouannaud, J.-P., Meseguer, J.: Principles of OBJ2. Proc. 12th ACM Symp. on Principles of Programming Languages, pp. 52–66. New Orleans 1985
Ganzinger, H.: Parameterized specifications: parameter passing and implementation with respect to observability. Trans. Prog. Lang. Syst. 5, 318–354 (1983)
Giarratana, V., Gimona, F., Montanari, U.: Observability concepts in abstract data type specification. Proc. 5th Intl. Symp. on Mathematical Foundations of Computer Science, Gdansk. Lect. Notes Comput. Sci. Vol. 45, pp. 576–587. Berlin, Heidelberg, New York: Springer 1976
Gogolla, M.: Algebraic specifications with partially ordered sorts and declarations. Fb. 169, Abteilung Informatik, Universität Dortmund 1983
Gogolla, M., Drosten, K., Lipeck, U., Ehrich, H.-D.: Algebraic and operational semantics of specifications allowing exceptions and errors. Theor. Comput. Sci. 34, 289–313 (1984)
Goguen, J.A., Burstall, R.M.: CAT, a system for the structured elaboration of correct programs from structured specifications. Technical report CSL-118, SRI International, 1980
Goguen, J.A., Burstall, R.M.: Introducing institutions. Proc. Logics of Programming Workshop. Clarke, E., Kozen, D. (eds.), Carnegie-Mellon University. Lect. Notes Comput. Sci. Vol. 164, pp. 221–256. Berlin, Heidelberg, New York: Springer 1984
Goguen, J.A., Burstall, R. M.: Some fundamental algebraic tools for the semantics of computation. Part 1: Comma categories, colimits, signatures and theories. Theor. Comput. Sci. 31, 175–210 (1984)
Goguen, J.A., Burstall, R. M.: A study in the foundations of programming methodology: specifications, institutions, charters and parchments. Proc. Workshop on Category Theory and Computer Programming, Guildford. Lect. Notes Comput. Sci. Vol. 240, pp. 313–333. Berlin, Heidelberg, New York: Springer 1986
Goguen, J.A., Jouannaud, J.-P., Meseguer, J.: Operational semantics for order-sorted algebra. Proc. 12th Intl. Colloq. on Automata, Languages and Programming, Nafplion, Greece. Lect. Notes Comput. Sci. Vol. 194, pp. 221–231. Berlin, Heidelberg, New York: Springer 1985
Goguen, J.A., Meseguer, J.: Universal realization, persistent interconnection and implementation of abstract modules. Proc. 9th Intl. Colloq. on Automata, Languages and Programming, Aarhus. Lect. Notes Comput. Sci. Vol. 140, pp. 265–281. Berlin, Heidelberg, New York: Springer 1982
Goguen, J.A., Thatcher, J.W., Wagner, E.G.: An initial algebra approach to the specification, correctness, and implementation of abstract data types. IBM research report RC6487 (1976). Also in: Current Trends in Programming Methodology, Vol. 4: Data Structuring. Yeh, R.T. (ed.), pp. 80–149. Englewood Cliffs, NJ: Prentice-Hall 1978
Goguen, J.A., Thatcher, J.W., Wagner, E.G., Wright, J.B.: Initial algebra semantics and continuous algebras. J. Assoc. Comput. Mach. 24, 68–95 (1977)
Gordon, M.J.: Denotational descriptions of Programming Languages. Berlin, Heidelberg, New York: Springer 1979
Guttag, J.V.: The specification and application to programming of abstract data types. Ph.D. thesis, University of Toronto 1975
Guttag, J.V., Horning, J.J.: Preliminary report on the Larch Shared Language. Report CSL-83-6, Computer Science Laboratory, Xerox PARC, 1983
Kamin, S.: Final data types and their specification. Trans. Prog. Lang. Syst. 5, 97–121 (1983)
Larsen, K.: Context-dependent bisimulation between processes. Ph.D. thesis, Dept. of Computer Science, University of Edinburgh, 1986
Lipeck, U.: Ein algebraischer Kalkül für einer strukturierten Entwurf von Datenabstraktionen. Ph.D. thesis, Abteilung Informatik, Universität Dortmund 1983
Liskov, B.H., Berzins, V.: An appraisal of program specifications. Computation Structures Group memo 141-1, Laboratory for Computer Science, MIT, 1977
MacLane, S.: Categories for the Working Mathematician. Berlin, Heidelberg, New York: Springer 1971
MacQueen, D. B.: Modules for Standard ML. Polymorphism 2, 2 (1985). See also: Proc. 1984 ACM Symp. on LISP and Functional Programming, pp. 198–207. Austin, Texas, 1984
Manna, Z., Waldinger, R.: A deductive approach to program synthesis. ACM Trans. Prog. Lang. Syst. 2, 92–121 (1980)
Meseguer, J., Goguen, J.A.: Initiality, induction and computability. In: Algebraic Methods in Semantics. Nivat, M., Reynolds, J. (eds.), pp. 459–541. Cambridge: Univ. Press 1983
Milner, R.G.: A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 348–375 (1978)
Milner, R. G.: The Standard ML core language. Polymorphism 2, 2 (1985). See also: A proposal for Standard ML. Proc. 1984 ACM Symp. on LISP and Functional Programming, pp. 184–197. Austin, Texas, 1984
Moore, E.F.: Gedanken-experiments on sequential machines. In: Automata Studies. Shannon, C.E., McCarthy, J. (eds.), pp. 129–153. Princeton: University Press 1956
Orejas, F.: Characterizing composability of abstract implementations. Proc. Intl. Conf. on Foundations of Computation Theory, Borgholm, Sweden. Lect. Notes Comput. Sci. Vol. 158, pp. 335–346. Berlin, Heidelberg, New York: Springer 1983
Parisi-Presicce, F., Blum, E.K.: The semantics of shared submodules specifications. Proc. 10th Colloq. on Trees in Algebra and Programming, Joint Conf. on Theory and Practice of Software Development (TAPSOFT). Lect. Notes Comput. Sci. Vol. 185, pp. 359–373. Berlin, Heidelberg, New York: Springer 1985
Pepper, P.: On the correctness of type transformations. Talk at 2nd Workshop on Theory and Applications of Abstract Data Types, Passau, 1983
Plotkin, G.D.: LCF considered as a programming language. Theor. Comput. Sci. 5, 223–255 (1977)
Reichel, H.: Behavioural equivalence — a unifying concept for initial and final specification methods. Proc. 3rd Hungarian Computer Science Conference, pp. 27–39. Budapest, 1981
Sannella, D.T., Tarlecki, A.: Some thoughts on algebraic specification. Proc. 3rd Workshop on Theory and Applications of Abstract Data Types, Bremen. Informatik-Fachberichte Vol. 116, pp. 31–38. Berlin, Heidelberg, New York: Springer 1985
Sannella, D.T., Tarlecki, A.: Program specification and development in Standard ML. Proc. 12th ACM Symp. on Principles of Programming Languages, pp. 67–77. New Orleans, 1985
Sannella, D.T., Tarlecki, A.: Specifications in an arbitrary institution. Inf. Control. 76 (1988). See also: Building specifications in an arbitrary institution, Proc. Intl. Symposium on Semantics of Data Types, Sophia-Antipolis. Lect. Notes Comput. Sci. Vol. 173, pp. 337–356. Berlin, Heidelberg, New York: Springer 1984
Sannella, D.T., Tarlecki, A.: Extended ML: an institution-independent framework for formal program development. Proc. Workshop on Category Theory and Computer Programming, Guildford. Lect. Notes Comput. Sci. Vol. 240, pp. 364–389. Berlin, Heidelberg, New York: Springer 1986
Sannella, D.T., Tarlecki, A.: On observational equivalence and algebraic specification. J. Comput. Syst. Sci. 34, 150–178 (1987). Extended abstract in: Proc. 10th Colloq. on Trees in Algebra and Programming, Joint Conf. on Theory and Practice of Software Development (TAPSOFT). Lect. Notes Comput. Sci. Vol. 185, pp. 308–322. Berlin, Heidelberg, New York: Springer 1985
Sannella, D.T., Tarlecki, A.: Toward formal development of programs from algebraic specifications: implementations revisited (extended abstract). Proc. 12th Colloq. on Trees in Algebra and Programming, Joint Conf. on Theory and Practice of Software Development (TAPSOFT), Pisa. Lect. Notes Comput. Sci. Vol. 249, pp. 96–110. Berlin, Heidelberg, New York: Springer 1987
Sannella, D.T., Wirsing, M.: Implementation of parameterised specifications. Report CSR-103-82, Dept. of Computer Science, Univ. of Edinburgh. Extended abstract in: Proc. 9th Intl. Colloq. on Automata, Languages and Programming, Aarhus. Lect. Notes Comput. Sci. Vol. 140, pp. 473–488. Berlin, Heidelberg, New York: Springer 1982
Sannella, D.T., Wirsing, M.: A kernel language for algebraic specification and implementation. Report CSR-131-83, Dept. of Computer Science, Univ. of Edinburgh. Extended abstract in: Proc. Intl. Conf. on Foundations of Computation Theory, Borgholm, Sweden. Lect. Notes Comput. Sci. Vol. 158, pp. 413–427. Berlin, Heidelberg, New York: Springer 1983
Schoett, O.: Data abstraction and the correctness of modular programming. Ph.D. thesis, University of Edinburgh, 1986
Tarlecki, A.: On the existence of free models in abstract algebraic institutions. Theor. Comput. Sci. 37, 269–304 (1985)
Tarlecki, A.: Quasi-varieties in abstract algebraic institutions. J. Comput. Syst. Sci. 33, 333–360 (1986)
Tarlecki, A.: Software-system development —an abstract view. Proc. 10th IFIP World Computer Congress, Dublin, pp. 685–688. Amsterdam: North-Holland 1986
Tarlecki, A., Wirsing, M.: Continuous abstract data types. Fundamenta Informaticae 9, pp. 95–126 (1986). Extended abstract: Continuous abstract data types —basic machinery and results. Proc. Intl. Conf. on Fundamentals of Computation Theory, Cottbus, GDR. Lect. Notes Comput. Sci. Vol. 199, pp. 431–441. Berlin, Heidelberg, New York: Springer 1985
Wand, M.: Specifications, models, and implementations of data abstractions. Theor. Comput. Sci. 20, 3–32 (1982)
Wirsing, M.: Structured algebraic specifications: a kernel language. Theor. Comput. Sci. 42, 123–249 (1986)
Zilles, S.N.: Algebraic specification of data types. Computation Structures Group memo 119, Laboratory for Computer Science, MIT (1974)
Author information
Authors and Affiliations
Additional information
An extended abstract of this paper appeared in [65]
Rights and permissions
About this article
Cite this article
Sannella, D., Tarlecki, A. Toward formal development of programs from algebraic specifications: Implementations revisited. Acta Informatica 25, 233–281 (1988). https://doi.org/10.1007/BF00283329
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00283329