Synthetic topology as conceived in this monograph has three fundamental aspects: 1. to explain what has been done in classical topology in conceptual terms, 2. to provide one-line, enlightening proofs of the theorems that constitute the core of the theory, and 3. to smoothly export topological concepts and theorems to unintended situations, keeping the synthetic proofs unmodified. The unintended situation that we focus on is the theory of computation, in particular regarding programming languages from both operational (Part I) and denotational (Part III) points of view, with emphasis on sequential computation. We are aware of other applications of synthetic topology, e.g. to locales, convergence spaces, sequential spaces, equilogical spaces, and some sheaf and realizability toposes, but this will be reported elsewhere. Aspects 1 and 2 are the subject of Part II. However, it turns out that it is possible to tackle aspect 3 without previous reference to 1 or 2. In fact, we start by developing synthetic topology of programming-language data types in Part I, without assuming any background in classical topology and without introducing any. Part III combines ideas from Parts I and II, developing non-trivial computational applications. The main new result is a computational version of the Tychonoff theorem. We also review previously known applications and explain how topology and semantics interact in program-correctness proofs. Although computers are finite, infinity shows up in a number of important situations in the theory of computation, e.g. infinity in syntax : loops, recursion; infinity in time: non-terminating computations; infinity of data: stream computation and higher-type computation; infinity in precision: real-number computation; infinity through abstraction: probabilistic descriptions. The first few chapters of Part I explore how the fundamental topological notions of continuous map, open set, closed set, compact set, Hausdorff space, and discrete space reconcile the finite character of computers with the infinite nature of the entities one wishes to calculate with. One of the main contributions of this monograph is to explain the computational nature of the the notion of compactness. Roughly speaking, a set is compact if and only if, given any semidecidable property, one can semidecide whether it holds for all elements of the set in finite time. Surprisingly, there are infinite computationally compact sets, for example that of infinite streams of binary digits.
Read full abstract