Denotational Engineering

This paper is devoted to the methodology of using denotational techniques in software design. Since denotations describe the essential components comprising a system and syntax provides ways for the user to access and communicate with these components, we suggest that denotations be developed in the first place and that syntax be derived from them later. That viewpoint is opposite to the traditional (descriptive) style where denotational techniques are used in assigning a meaning to some earlier defined syntax. Our methodology is discussed on an algebraic ground where both denotations and syntax constitute many-sorted algebras and where denotational semantics is a homomorphism between them. On that ground the construction of a denotational model of a software system may be regarded as a derivation of a sequence of algebras. We discuss some mathematical techniques which may support that process especially this part where syntax is derived from denotations. The suggested methodology is illustrated on two small examples. The authors have the peculiar idea that domains of our concept.s can be quite rigorous!)’ laid out before we make thejnal choice of the language in which we are going to describe these concepts. (. ) What we suggest is that in order to sort out your idear, you put your domains on the table jirst. Scott and Strachey [28]

[1]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[2]  Christopher Strachey,et al.  Toward a mathematical semantics for computer languages , 1971 .

[3]  Joseph A. Goguen,et al.  Abstract Errors for Abstract Data Types , 1977, Formal Description of Programming Concepts.

[4]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.

[5]  Andrzej Tarlecki,et al.  Naive Denotational Semantics , 1983, IFIP Congress.

[6]  Michael J. C. Gordon,et al.  The Denotational Description of Programming Languages , 1979, Springer New York.

[7]  D. Knuth,et al.  Simple Word Problems in Universal Algebras , 1983 .

[8]  Dines Bjørner,et al.  Formal specification and software development , 1982 .

[9]  Nachum Dershowitz,et al.  Computing with Rewrite Systems , 1985, Inf. Control..

[10]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[11]  José Meseguer,et al.  PROGRAMMING WITH PARAMETERIZED ABSTRACT OBJECTS IN OBJ. , 1983 .

[12]  Andrzej Blikle,et al.  A Guided Tour of the Mathematics of MetaSoft'88 , 1988, Inf. Process. Lett..

[13]  José Meseguer,et al.  Initiality, induction, and computability , 1986 .

[14]  Peter D. Mosses,et al.  The use of action semantics , 1986, Formal Description of Programming Concepts.

[15]  Jan Willem Klop,et al.  Term rewriting systems: a tutorial , 1987 .

[16]  Dines Bjørner,et al.  The Vienna Development Method: The Meta-Language , 1978, Lecture Notes in Computer Science.

[17]  Donald Sannella,et al.  On Observational Equivalence and Algebraic Specification , 1987, J. Comput. Syst. Sci..

[18]  Michael A. Harrison,et al.  Introduction to formal language theory , 1978 .

[19]  Joseph A. Goguen,et al.  Initial Algebra Semantics and Continuous Algebras , 1977, J. ACM.

[20]  John McCarthy,et al.  A BASIS FOR A MATHEMATICAL THEORY OF COMPUTATION 1) , 2018 .

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

[22]  Robert D. Tennent,et al.  The denotational semantics of programming languages , 1976, CACM.

[23]  Alfred V. Aho,et al.  Deterministic parsing of ambiguous grammars , 1975, Commun. ACM.