[ home | schedule | assignments | resources | handouts | overview ]

CS 15-859 Domain Theory

Brief Overview of Domain Theory

What is a domain?
Basically, domains are "convenient sets" on which to define functions in order to have recursive definitions. The trick is to find which functions.

Why not use ordinary sets?
Ordinary (total functions) between sets are not closed under recursion.

Why not use partial functions?
We will, but it is not so clear how to treat partial functions of partial functions.

Why not use integers and standard partial recursive functions?
We could, but all the Gödel numbering is pretty messy and not general enough. Moreover, functionals are confusing.

What is the best theory of domains?
The answer is not yet known! The theory is evolving, and there may be no "best".

What is the problem?
The difficulty lies in finding good closure conditions on the category of domains so there can be sufficiently many domain constructions and finding good methods of proving properties, e.g, of recursively defined relations on the domains.

Why all the emphasis on recursion?
Because the idea is mathematically basic and central to understanding the semantics of programming languages.

Where in the world did the idea of domains come from?
The original motivation (in 1969) was to give a typed calculus of recursive functionals with many models using known idea from recursive function theory. It took some time to realize that the approach also modelled untyped functions.

Does domain theory give a satisfactory approach to the semantics for programming languages?
Yes and no. Not all aspects of program equivalence can be easily modelled by domain-theoretic methods.

What is the right view of the relative merits of operational vs. denotational semantics?
Both are needed.

What are continuous lattices?
They are a kind of complete lattice satisfying an infinite distributive law. Continuous mappings are easily defined as directed-sup-preserving functions. They can be used as domains generalizing earlier models.

What is so good about continuous lattices?
They are also quite generally defined as a kind of injective T0-space or absolute retracts. They form a cartesian closed category which is closed under some very flexible inverse limits.

So what is wrong with continuous lattices?
Understanding then takes too much topology!
There are too many of them.
The top element is too hard to interpret.
The bottom element is not always wanted.
There are too many continuous functions.
The relation to computability is perhaps obscure.
They are not closed under all necessary constructions. They do not capture all that is necessary about partial functions.

Can these difficulties be overcome?
We hope so particularly using partial equivalence relations.

Are there new mathematical applications of the theory?
Yes, new applications of continuous domain theory are being found to: fractal image compression, statistical physics, neural nets, stochastic processes, computation in chaos theory, exact evaluation of integrals. The basic insight (found by Abbas Edalat) was that the probabilistic power domain of the upper space of a locally compact metric space provides effective computations of Borel measures and integrals.

What are some vexing questions for the future?
Must we deal with category theory?
Must we deal with linear logic?
Would domains make better sense under a change of logic?
Do we want types in programming languages at all?
Do domains and quotients give us sufficiently many types?
Is "polymorphism" perhaps the name of a perversion?
Are impredicative types really necessary for computational practice?
How can we resolve the conflict between total and partial functions?
Is the extensional notion of function the correct kind of abstraction?
What is the proper rôle of continuity in semantics?
Do we always need the idea of finite approximations?
Do we have a sufficient grasp of computability?
Would it help to formalize the language of semantics?

How can we give students and researchers (in, say, computer science) the mathematical background to understand the problems and the subtleties?
This is a very tiresome question!

[ home | schedule | assignments | resources | handouts | overview ]


Page maintainers: Dana Scott and Andrej Bauer