Denotational Engineering or from Denotations to Syntax

This paper is devoted to the methodology of using denotational techniques in software design. Since denotations describe the mechanisms of a system and syntax is only a user-visible representation of these mechanisms, 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 an example where we develop a toy programming language with rendezvous mechanisms.

[1]  J. Shepherdson,et al.  Computer programming and formal systems , 1965 .

[2]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

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

[4]  Andrzej Blikle Proving Programs by Sets of Computations , 1974, MFCS.

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

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

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

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

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

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

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

[12]  Antoni W. Mazurkiewicz Semantics of concurrent systems: a modular fixed-point trace approach , 1984, European Workshop on Applications and Theory in Petri Nets.

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

[14]  C. A. R. Hoare,et al.  A Theory of Communicating Sequential Processes , 1984, JACM.

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

[16]  Andrea Maggiolo-Schettini,et al.  An Algebra of Processes , 1987, J. Comput. Syst. Sci..

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