A branch of mathematics introduced by Dana Scott in 1970 as a mathematical theory of programming languages, and for nearly a quarter of a century developed almost exclusively in connection with denotational semantics in computer science. In denotational semantics of programming languages, the meaning of a program is taken to be an element of a domain. A domain is a mathematical structure consisting of a set of values (or "points") and an ordering relation, <= on those values. Domain theory is the study of such structures. ("<=" is written in latex as \subseteq) Different domains correspond to the different types of object with which a program deals. In a language containing functions, we might have a domain X -> Y which is the set of functions from domain X to domain Y with the ordering f <= g iff for all x in X, f x <= g x. In the pure lambda-calculus all objects are functions or applications of functions to other functions. To represent the meaning of such programs, we must solve the recursive equation over domains, D = D -> D which states that domain D is (isomorphic to) some function space from D to itself. I.e. it is a fixed point D = F(D) for some operator F that takes a domain D to D -> D. The equivalent equation has no non-trivial solution in set theory. There are many definitions of domains, with different properties and suitable for different purposes. One commonly used definition is that of Scott domains, often simply called domains, which are omega-algebraic, consistently complete cpos. There are domain-theoretic computational models in other branches of mathematics including dynamical systems, fractals, measure theory, integration theory, probability theory, and stochastic processes. See also abstract interpretation, bottom, pointed domain. |