  The mathematical framework of Stone duality is used to synthesize a number of
hitherto separate developments in Theoretical Computer Science: - Domain
Theory, the mathematical theory of computation introduced by Scott as a
foundation for denotational semantics. - The theory of concurrency and systems
behaviour developed by Milner, Hennessy et al. based on operational semantics.
- Logics of programs.
  Stone duality provides a junction between semantics (spaces of points =
denotations of computational processes) and logics (lattices of properties of
processes). Moreover, the underlying logic is geometric, which can be
computationally interpreted as the logic of observable properties---i.e.
properties which can be determined to hold of a process on the basis of a
finite amount of information about its execution.
  These ideas lead to the following programme:
  1. A metalanguage is introduced, comprising
  - types = universes of discourse for various computational situations.
  - terms = programs = syntactic intensions for models or points.
  2. A standard denotational interpretation of the metalanguage is given,
assigning domains to types and domain elements to terms.
  3. The metalanguage is also given a {\em logical} interpretation, in which
types are interpreted as propositional theories and terms are interpreted via a
program logic, which axiomatizes the properties they satisfy.
  4. The two interpretations are related by showing that they are Stone duals
of each other. Hence, semantics and logic are guaranteed to be in harmony with
each other, and in fact each determines the other up to isomorphism.
  This opens the way to a whole range of applications. Given a denotational
description of a computational situation in our meta-language, we can turn the
handle to obtain a logic for that situation.
