Parameter Passing in Algebraic Specification Languages

In this paper we study the semantics of the parameter passing mechanism in algebraic specification languages. More precisely, this problem is studied for parameterized data types and parameterized specifications. The given results include the extension of the model functor (which is useful for correctness proofs) and the semantic properties of the result of inserting actual parameters into parameterized specifications. In particular, actual parameters can be parameterized and the result is nested parameterized specification. Correctness of an applied (matrix (int)) or a nested (bintree (string ())) parameterized specification is shown given correctness of the parts. The formal theory in this paper is restricted to the basic algebraic case where only equations are allowed in the parameter declaration and parameter passing is given by specification morphisms. But we also give the main ideas of a corresponding theory with requirements where we allow different kinds of restrictions in the parameter declaration.

[1]  Hans-Dieter Ehrich,et al.  Constructive Specifications of Abstract Data Types by Replacements , 1978, Graph-Grammars and Their Application to Computer Science and Biology.

[2]  Hartmut Ehrig,et al.  A Kernel Language for Algebraic Specification and Implementation , 1983, ADT.

[3]  George Gratzer,et al.  Universal Algebra , 1979 .

[4]  Hartmut Ehrig,et al.  Methodology for the Specification of Software Systems: From Formal Requirements to Algebraic Design Specifications , 1981, GI Jahrestagung.

[5]  Manfred Broy,et al.  Abstract Data Types as Lattices of Finitely Generated Models , 1980, MFCS.

[6]  Hans-Dieter Ehrich On the Theory of Specification, Implementation, and Parametrization of Abstract Data Types , 1982, JACM.

[7]  James W. Thatcher,et al.  Data Type Specification: Parameterization and the Power of Specification Techniques , 1982, TOPL.

[8]  Richard D. Jenks MODLISP -- an introduction (invited) , 1979, EUROSAM.

[9]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

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

[11]  Hartmut Ehrig,et al.  Stepwise Specification and Implementation of Abstract Data Types , 1978, ICALP.

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

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

[14]  M. Arbib,et al.  Arrows, Structures, and Functors: The Categorical Imperative , 1975 .

[15]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, CACM.

[16]  Hartmut Ehrig,et al.  Algebraic Theory of Parameterized Specifications with Requirements , 1981, CAAP.

[17]  Horst Reichel,et al.  Initially-Restricting Algebraic Theories , 1980, MFCS.

[18]  Barry M. Trager,et al.  A language for computational algebra , 1981, SYMSAC '81.

[19]  Dana S. Scott Mathematical concepts in programming language semantics , 1971, AFIPS '72 (Spring).

[20]  S. Maclane,et al.  Categories for the Working Mathematician , 1971 .

[21]  Peter Raulefs,et al.  Initial and Terminal Algebra Semantics of Parameterized Abstract Data Type Specifications With Inequalities , 1981, CAAP.