Systems semantics: principles, applications, and implementation

Systems semantics extends the denotational semantics of programming languages to a semantics for the description of arbitrary systems, including objects that are not computations in any sense. By defining different meaning functions, the same formal description may be used to denote different system properties, such as structure, behavior, component cost, and performance aspects (e.g., timing). The definition of these semantic functions also provides guidance in language design, in particular for the match between language constructs and the system concepts to be expressed. Aiming at compositionality ensures useful properties for formal manipulation. In this fashion, the meaning functions can be made sufficiently simple to serve not only as a direct implementation on a machine but also as rules for reasoning about systems in a transformational manner. As the applications show, however, compositionality can be ensured only through careful consideration of the characteristics of the flow of information inside the system. Two classes of application are discussed:Unidirectional systems, in particular digital systems without feedback (combinational) and with feedback (sequential), and a certain class of analog systems. Nonunidirectional systems, in particular two-port analog networks. The emphasis will be on the functional style of description and on formal reasoning (theorem proving, derivation of properties). Implementation and rapid prototyping strategies in various system description environments are also briefly discussed. These would permit the concepts of system semantics to be explored without the need for a complete implementation.

[1]  Chris Hankin,et al.  The theory and practice of strictness analysis for higher order functions , 1985 .

[2]  D. A. Turner The semantic elegance of applicative languages , 1981, FPCA '81.

[3]  Keith Hanna,et al.  Specification and Verification using Higher-Order Logic , 1985 .

[4]  Niklaus Wirth,et al.  What can we do about the unnecessary diversity of notation for syntactic definitions? , 1977, Commun. ACM.

[5]  Rakesh Chadha,et al.  Computer Aided Design of Microwave Circuits , 1978 .

[6]  P. Wegner Programming Languages, Information Structures, and Machine Organization. , 1968 .

[7]  Peter Henderson Functional geometry , 1982, LFP '82.

[8]  Edward B. Eichelberger,et al.  Hazard Detection in Combinational and Sequential Switching Circuits , 1965, IBM J. Res. Dev..

[9]  Irene Buchanan Modelling and verification in structured integrated circuit design , 1980 .

[10]  E. H. Nordholt Design of High-Performance Negative-Feedback Amplifiers , 1980 .

[11]  Elliott Mendelson,et al.  Introduction to Mathematical Logic , 1979 .

[12]  Robert B. Tilove A null-object detection algorithm for constructive solid geometry , 1984, CACM.

[13]  Mary Sheeran,et al.  muFP, a language for VLSI design , 1984, LFP '84.

[14]  Elliott Mendelson,et al.  Introduction to mathematical logic (3. ed.) , 1987 .

[15]  Luca Cardelli,et al.  Algebraic approach to hardware description and verification , 1982 .

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

[17]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[18]  Steven D. Johnson Synthesis of digital designs from recursion equations , 1983 .

[19]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[20]  Steven M. German,et al.  Zeus: A Language for Expressing Algorithms in Hardware , 1985, Computer.

[21]  M. Rem,et al.  Trace theory and the design of concurrent computations , 1985 .

[22]  T.R. Cuthbert,et al.  Design of high-performance negative-feedback amplifiers , 1985, Proceedings of the IEEE.

[23]  Norihisa Suzuki Concurrent Prolog as an Efficient VLSI Design Language , 1985, Computer.

[24]  Raymond T. Boute,et al.  Representational and Denotational Semantics of Digital Systems , 1989, IEEE Trans. Computers.

[25]  Raymond T. Boute,et al.  On The Equivalence of Time-Division and Frequency-Division Multiplexing , 1985, IEEE Trans. Commun..

[26]  Harry G. Barrow,et al.  VERIFY: A Program for Proving Correctness of Digital Hardware Designs , 1984, Artif. Intell..

[27]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[28]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[29]  David B. Lomet Objects and Values: The Basis of a Storage Model for Procedural Languages , 1976, IBM J. Res. Dev..

[30]  Bruce J. MacLennan Abstraction in the Intel iAPX-432 prototype systems implementation language , 1983, SIGP.

[31]  John Darlington,et al.  The Unification of Functional and Logic Languages , 1986, Logic Programming: Functions, Relations, and Equations.

[32]  Fumihiro Maruyama Hardware Verification , 1985, Computer.

[33]  George J. Milne,et al.  Circal: A calculus for circuit description , 1983, Integr..