Semantic Domains and Denotational Semantics
Abstract:
This chapter discusses classes of mathematical structures suitable for use as the semantic domains of programming language constructs. Such structures play a significant role in the foundation of denotational semantics. Many categories of domains have been introduced to serve various purposes, but existing theories share several important characteristics. One such common concept is the view of partial elements provided by the theory. This concept of partiality is integral to the way the semantic domains we discuss can be used to model such programming language features as recursive definitions of functions and datatypes. A theory of computability on abstract spaces requires a concept of finite approximation which is also provided by the theory of semantic domains. These concepts must be defined for spaces that maintain the desired level of abstraction while still providing an intuitive explanation of computability for functions, functionals, and such programming constructs as higher-order procedures streams and so on. We discuss two classes of domains in some detail with an attempt to motivate the need for the conditions being imposed on the structures in computational terms. We have attempted to avoid heavy abstractions while trying to introduce the reader to several of the central concepts and techniques which are common to all of the approaches we might have taken. edc